python - 根据元素是否在列列表中选择 DataFrame 的行

标签 python pandas

我目前有一个像这样的 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/

相关文章:

python - 程序跳过列表元素

python - 从 pandas df 中选择特定列

python - Pandas 中按多列分组

python - 通过比较 Pandas 中前 n 行来获取列的最小值

Python:用 py2exe 编译的脚本会卡住操作系统吗?

python - 如何使用 Python 在 Redis 缓存中设置由同一列名下的多行组成的值

python - 匹配两个打印中的相同单词

python - 训练集和测试集的随机森林回归精度不同

python - Pandas 使用 read_sql_table 占用过多内存

python - Pandas 、 python 。替换列中值的随机子集