我目前有一个像这样的DataFrame:
col1 col2 col3
0 0 1 ['a', 'b', 'c']
1 2 3 ['d', 'e', 'f']
2 4 5 ['g', 'h', 'i']
我要做的是选择col3
列表中包含某个值的行。例如,我最初运行的代码是:
df.loc['a' in df['col3']]
但出现以下错误:
KeyError: False
我看了一个问题:KeyError: False in pandas dataframe,但并不能完全回答我的问题。我已经尝试了答案中建议的解决方案,但没有帮助。
我将如何处理此问题?谢谢。
答案 0 :(得分:2)
使用列表理解来测试每个列表:
df1 = df[['a' in x for x in df['col3']]]
print (df1)
col1 col2 col3
0 0 1 [a, b, c]
或使用shell:
df1 = df[df['col3'].map(lambda x: 'a' in x)]
#alternative
#df1 = df[df['col3'].apply(lambda x: 'a' in x)]
或创建DataFrame
并通过Series.map
和DataFrame.eq
进行测试:
df1 = df[pd.DataFrame(df['col3'].tolist()).eq('a').any(axis=1)]
答案 1 :(得分:0)
使用:
df = df[df.testc.map(lambda x: 'a' in x)]