比较字符串列表(A 和 B)的两个 DataFrame 列,以查找 B 中是否有任何不在 A 中以添加到 Col C

问题描述 投票:0回答:1
d = {'Col A': [['Singapore','Germany','UK'],['Ireland','Japan','Australia'],['India','Korea','Vietnam']], 'Col B': [['Singapore','Germany','UK'],['Ireland','Japan'],['India','Mexico','Argentina']]}

df = pd.DataFrame(data=d)

我正在尝试比较这两列并返回一个新列 Col C,其中包含 Col B 中存在但不存在于 Col A 中的任何字符串。因此,第 1 行相同时不返回任何值,第 2 行,其中 A包含 UK 不返回任何值,但第 3 行返回“墨西哥”和“阿根廷”,但不返回“韩国”或越南。

我已经尝试从 Col A 中创建一个单独的列,从 Col A 中删除 Col B 中不存在的国家,例如澳大利亚,因为国家可以在 Col A 中不在 Col B 中。然后是一个列表理解识别两者之间的唯一字符串,然后可以将其添加到 Col C。但我觉得必须有一个更简单的方法。

python string list list-comprehension
1个回答
1
投票

你可以使用

np.setdiff1d
.

for index, row in df.iterrows():
    df.at[index, 'Col C'] = np.setdiff1d(row['Col B'], row['Col A'])
© www.soinside.com 2019 - 2024. All rights reserved.