首页 > 解决方案 > 在 Python/Pandas 的列表类型列中查找匹配值

问题描述

所以我有一个函数,它根据数据框中的某个字符串是否包含列表中的值来设置数据框的列中的值。然后,我想计算数据框中有多少行具有该值,但出现错误。

如果满足某些条件,'tag' 列被设置为等于列表 ['date','must',glucose']。并非所有行都满足发生这种情况的条件。我想通过分析数据框来找到满足这一点的行数。

我试过这个:

df = data[data['tag'] == ['date','must','glucose']]
print(df)

...但这会产生:

ValueError: Lengths must match to compare

我也试过这个,但会产生同样的错误:

df = data.tag == ['date','must','glucose']

如果我只是比较值,那会起作用,但是在单元格中使用列表而不是值会炸毁它。就像值只是'四'并且我正在这样做,它不会给我一个错误:

df = data[data.tag=='four']

有没有办法做到这一点?谢谢!

标签: pythonpandaslistdataframe

解决方案


You can use apply function for it.  

df = df[df['tag'].apply(lambda x : x == ['date','must','glucose'])]

您也可以将其转换为元组并进行比较

来源:熊猫:比较系列中的列表对象


推荐阅读