我想基于A列从B列中删除列表中的值,想知道如何。
给出:
df = pd.DataFrame({
'A': ['a1', 'a2', 'a3', 'a4'],
'B': [['a1', 'a2'], ['a1', 'a2', 'a3'], ['a1', 'a3'], []]
})
我想要:
result = pd.DataFrame({
'A': ['a1', 'a2', 'a3', 'a4'],
'B': [['a1', 'a2'], ['a1', 'a2', 'a3'], ['a1', 'a3'], []],
'Output': [['a2'], ['a1', 'a3'], ['a1'], []]
})
答案 0 :(得分:5)
一种实现方法是通过DataFrame.apply将过滤功能应用于每一行:
df['Output'] = df.apply(lambda x: [i for i in x.B if i != x.A], axis=1)
答案 1 :(得分:1)
使用iterrows()
的另一种解决方案:
for i,value in df.iterrows():
try:
value['B'].remove(value['A'])
except ValueError:
pass
print(df)
输出:
A B
0 a1 [a2]
1 a2 [a1, a3]
2 a3 [a1]
3 a4 []