当每一行都是一个列表时,你如何使用pandas isin()函数?

时间:2017-02-28 02:10:14

标签: python pandas

例如:

import pandas as pd
data = ['A2', 'A5', 'XS', '2X', '8W']
codes = {'codes':[data]}
df = pd.DataFrame(codes)

                  codes
0  [A2, A5, XS, 2X, 8W]

现在我想测试一下我的列表中是否有某些值来自另一个列表。

df['wo'] = df.codes.isin(["8C", "8D", "8E", "8W", "A2"])

我一直在TypeError: unhashable type: 'list' 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

pandasset

你可以使用套装。减去集合时,您会得到设定的差异。比较集时,您将获得适当的子集。当与另一个集合不同的集合是同一集合的适当子集时......则存在交集。

s = df.codes.apply(set)
s - set(["8C", "8D", "8E", "8W", "A2"]) < s

0    True
Name: codes, dtype: bool