gpt4 book ai didi

python - 查询具有列表值的 Pandas 数据框列

转载 作者:太空狗 更新时间:2023-10-30 01:31:29 26 4
gpt4 key购买 nike

我有一个数据框,如下所示。

import pandas as pd


raw_data = {'score': [1,2,3],
'tags': [['apple','pear','guava'],['truck','car','plane'],['cat','dog','mouse']]}


df = pd.DataFrame(raw_data, columns = ['score', 'tags'])

df.query("score==1") 给出第一行作为结果。

但是 df.query("tags='apple'") 给出了错误。

如何为“标签”列编写查询。

最佳答案

您不能使用 pd.DataFrame.query 来测试一系列列表中列表中字符串的成员资格。不建议在 Pandas 数据框中保存列表,因为您会失去矢量化功能。

使用现有数据框,您可以使用 pd.Series.apply 计算掩码:

res = df[df['tags'].apply(lambda x: 'apple' in x)]

print(res)

score tags
0 1 [apple, pear, guava]

或者您可以使用列表理解:

res = df[['apple' in x for x in df['tags']]]

第三种选择是使用set:

res = df[df['tags'].apply(set) >= {'apple'}]

最后一个选项虽然昂贵,但在您测试是否存在多个标签时可能适合。在每种情况下,我们都构建了一个 bool 系列,然后我们用它来屏蔽数据框。

关于python - 查询具有列表值的 Pandas 数据框列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50966210/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com