我想根据 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'], []]})
2 回答

狐的传说
TA贡献1804条经验 获得超3个赞
一种方法是通过DataFrame.apply对每一行应用过滤函数:
df['Output'] = df.apply(lambda x: [i for i in x.B if i != x.A], axis=1)

慕虎7371278
TA贡献1802条经验 获得超4个赞
另一种解决方案使用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 []
添加回答
举报
0/150
提交
取消