我目前有一个像这样的 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但它并不能完全回答我的问题。我已经尝试了答案中建议的解决方案,但没有帮助。
我该如何解决这个问题?谢谢。
最佳答案
使用列表理解来测试每个列表:
df1 = df[['a' in x for x in df['col3']]]
print (df1)
col1 col2 col3
0 0 1 [a, b, c]
或者使用Series.map
:
df1 = df[df['col3'].map(lambda x: 'a' in x)]
#alternative
#df1 = df[df['col3'].apply(lambda x: 'a' in x)]
或者创建DataFrame
并通过DataFrame.eq
进行测试与 DataFrame.any
:
df1 = df[pd.DataFrame(df['col3'].tolist()).eq('a').any(axis=1)]
关于python - 根据元素是否在列列表中选择 DataFrame 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59246952/