python - 比较 Pandas 数据框中的 2 个列表列。如果存在于另一个列表中,则从一个列表中删除值

标签 python pandas dataframe

假设我有 2 个列表列,如下所示:

group1 = [['John', 'Mark'], ['Ben', 'Johnny'], ['Sarah', 'Daniel']]
group2 = [['Aya', 'Boa'], ['Mab', 'Johnny'], ['Sarah', 'Peter']]

df = pd.DataFrame({'group1':group1, 'group2':group2})

我想比较两个列表列并从 group1 中删除列表元素(如果它们存在于 group2 中)。以上的预期结果:

    group1                       group2
['John', 'Mark']             ['Aya', 'Boa']
['Ben']                     ['Mab', 'Johnny']
['Daniel']                  ['Sarah', 'Peter']

我该怎么做?我试过这个:

df['group1'] = [[name for name in df['group1'] if name not in df['group2']]]

但出现错误:

TypeError: unhashable type: 'list'

请帮忙。

最佳答案

您需要zip两个系列。我正在使用 set这里是为了提高效率(如果每个列表只有几个项目,这并不重要):

df['group1'] = [[x for x in a if x not in S]
                for a, S in zip(df['group1'], df['group2'].apply(set))]

输出:

         group1          group2
0  [John, Mark]      [Aya, Boa]
1         [Ben]   [Mab, Johnny]
2      [Daniel]  [Sarah, Peter]

关于python - 比较 Pandas 数据框中的 2 个列表列。如果存在于另一个列表中,则从一个列表中删除值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74486315/

相关文章:

uWSGI下的Python创建权限错误的文件和目录

python - selenium无法在知乎提交答案

python - Pandas DataFrame,将复杂函数智能应用于 groupby 结果

python - 给定值的最近值

python - Pandas 每天都会比较同一时间的值

R:如何检索数据框的列名

python - 我正在尝试在文本文件中设置范围,以便将搜索结果与特定章节相关联

Python 3 : Alignment and commas

python - Pandas - 根据日期将数据框拆分为多个数据框?

python - 如何在 python pandas 中使用带有 bool 的查询函数?