在包含列表中的字符串的数据框中搜索一行

时间:2017-10-12 15:51:04

标签: python regex python-2.7 pandas

我正在尝试搜索列表中包含字符串的row

df

           Column1            Out1
0          ['x', 'y']         (0, 2)
1          ['a', 'b']         (3, 0)
etc.

我已按照 this 中的建议,尝试以下内容在'a'list内搜索包含Column1的行:

print df['Column1'].isin(['a'])

期待这样的结果:

1         ['a', 'b']          (3, 0)

但是,我似乎收到以下错误:

TypeError: unhashable type: 'list'

2 个答案:

答案 0 :(得分:3)

列表中的检查值需要in

df = df[df['Column1'].apply(lambda x: 'a' in x)]

样品:

df = pd.DataFrame({'Column1':[['x','y'], ['a','b']],
                   'Out1':[(0,2), (3,0)]})
print (df)
  Column1    Out1
0  [x, y]  (0, 2)
1  [a, b]  (3, 0)

df1 = df[df['Column1'].apply(lambda x: 'a' in x)]
print (df1)
  Column1    Out1
1  [a, b]  (3, 0)
df1 = df[['a' in x for x in df['Column1']]]
print (df1)
  Column1    Out1
1  [a, b]  (3, 0)

答案 1 :(得分:0)

您一开始所做的是正确的:

df['Column1'].isin(['a'])

但是您要用相同数据框的方括号将其包装。

这是一个示例:

threads = ['1111', '2222', '3333', '4444']
dev_data = train[(train['thread_col'].isin(threads))]

(dev_data)是一个包含结果行的数据框。