根据其他列值删除数据框的值

时间:2021-07-16 22:21:14

标签: python-3.x pandas dataframe duplicates conditional-statements

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

对于“match”列中包含“TRUE”的每一行,应删除“Total Difference by Brand”列中的值(不是零,只是空)。

<头>
变量 差异幅度 品牌总差异 位置总差异 匹配
新资金来源总数 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 真的

谢谢

1 个答案:

答案 0 :(得分:1)

你可以试试这个:

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