根据另一列从熊猫数据框中一列中的每个列表中删除元素

我想根据 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'], []]

})


鸿蒙传说
浏览 89回答 2
2回答

狐的传说

一种方法是通过DataFrame.apply对每一行应用过滤函数:df['Output'] = df.apply(lambda x: [i for i in x.B if i != x.A], axis=1)

慕虎7371278

另一种解决方案使用iterrows():for i,value in df.iterrows():    try:        value['B'].remove(value['A'])    except ValueError:        passprint(df)输出:    A         B0  a1      [a2]1  a2  [a1, a3]2  a3      [a1]3  a4        []
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python