我正在尝试搜索列表中包含字符串的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'
答案 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)是一个包含结果行的数据框。