包含列表的列之间的差异

问题描述 投票:0回答:1

我有一个数据框,其中列出了列值,并且想要查找两列之间的差异。

data={'NAME':['JOHN','MARY','CHARLIE'],
      'A':[[1,2,3],[2,3,4],[3,4,5]],
      'B':[[2,3,4],[3,4,5],[4,5,6]]}
df=pd.DataFrame(data)

为什么不起作用?

df = df.assign(X1 = lambda x: [y for y in x['A'] if y not in x['B']])

我收到错误:

类型错误:不可散列的类型:“列表”

我不明白为什么?

python pandas dataframe
1个回答
0
投票

有两个问题,您不能使用

lst in Series
,因为列表不可散列,并且您应该使用带有 None 的三元:

df.assign(X1 = lambda x: [y if y not in x['B'].tolist() else None
                          for y in x['A']])

输出:

      NAME          A          B         X1
0     JOHN  [1, 2, 3]  [2, 3, 4]  [1, 2, 3]
1     MARY  [2, 3, 4]  [3, 4, 5]       None
2  CHARLIE  [3, 4, 5]  [4, 5, 6]       None
© www.soinside.com 2019 - 2024. All rights reserved.