首页 > 解决方案 > 熊猫数据框中的标志差异

问题描述

我有 pandas 数据集,并想创建一个标记差异的列

即 B 列对于 A 列中的每个值应该具有相同的值,反之亦然。如果不是,则将其标记为 1

A列 B栏 新列
亚特兰大 遗传算法 0
亚特兰大 遗传算法 0
纽约 纽约 1
纽约 YN 1
公司1 通讯 1
公司 通讯 1
公司 通讯 1

标签: pythonpandasconditional-statements

解决方案


由于问题已更新,因此这是一种方法。我使用这些数据:

df = pd.DataFrame({"column A": ["Atlanta", "Atlanta", "New York", "New York"], "column B": ["AT", "AT", "YN", "NY"]})
df
    column A    column B
0   Atlanta     AT
1   Atlanta     AT
2   New York    YN
3   New York    NY

使用 pd.groupby :

df_gb = df.groupby("column A", as_index=False).nunique()

condition = [df_gb["column B"] == 1]
value = [0]
df_gb["difference"] = np.select(condition, value, default=1)
df_gb = df_gb[["column A", "difference"]]

输出[0]:

df_gb

    column A    difference
0   Atlanta     0
1   New York    1

然后最后:

df = df.merge(df_gb, on="column A", how="left")

输出[1]:

df

    column A    column B    difference
0   Atlanta     AT          0
1   Atlanta     AT          0
2   New York    YN          1
3   New York    NY          1

推荐阅读