首页 > 解决方案 > 根据其他列值删除数据框的值

问题描述

我想根据另一列中的值从数据框的特定列中删除单元格值。

对于“匹配”列中包含“TRUE”的每一行,应删除“品牌总差异”列中的值(不是零,只是空)。

多变的 差异幅度 品牌总差异 不同位置的总差异 匹配
新资金来源总额 1406904 5031189 4373182 错误的
新资金来源总额 75821 5031189 4373182 真的
新资金来源总额 33692 5031189 4373182 真的
新资金来源总额 2627094 5031189 4373182 真的
新资金来源总额 400000 500000 4373182 错误的
新资金来源总额 500000 500000 4373182 真的
新资金来源总额 1406904 5131189 4373182 错误的
新资金来源总额 75821 5131189 4373182 真的
新资金来源总额 33692 5131189 4373182 真的

数据框应如下所示:

多变的 差异幅度 品牌总差异 不同位置的总差异 匹配
新资金来源总额 1406904 5031189 4373182 错误的
新资金来源总额 75821 4373182 真的
新资金来源总额 33692 4373182 真的
新资金来源总额 2627094 4373182 真的
新资金来源总额 400000 500000 4373182 错误的
新资金来源总额 500000 4373182 真的
新资金来源总额 1406904 5131189 4373182 错误的
新资金来源总额 75821 4373182 真的
新资金来源总额 33692 4373182 真的

谢谢

标签: python-3.xpandasdataframeduplicatesconditional-statements

解决方案


你可以试试这个:

import pandas as pd

df = pd.DataFrame(
    {
        "variable": {
            0: "Total New Funding Sources",
            1: "Total New Funding Sources",
            2: "Total New Funding Sources",
            3: "Total New Funding Sources",
        },
        "Difference Magnitude": {0: 1406904.0, 1: 75821.0, 2: 33692.0, 3: 2627094.0},
        "Total Difference by Brand": {
            0: 5031189.0,
            1: 5031189.0,
            2: 5031189.0,
            3: 5031189.0,
        },
        "Total Difference by Location": {
            0: 4373182.0,
            1: 4373182.0,
            2: 4373182.0,
            3: 4373182.0,
        },
        "match": {0: False, 1: True, 2: True, 3: True},
    }
)

df.loc[df["match"].eq(True), "Total Difference by Brand"] = ""

print(df[["variable", "Total Difference by Brand"]])
# Outputs
                    variable Total Difference by Brand
0  Total New Funding Sources                 5031189.0
1  Total New Funding Sources
2  Total New Funding Sources
3  Total New Funding Sources

推荐阅读