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。但我觉得必须有一个更简单的方法。
你可以使用
np.setdiff1d
.
for index, row in df.iterrows():
df.at[index, 'Col C'] = np.setdiff1d(row['Col B'], row['Col A'])