gpt4 book ai didi

python - Pandas 在字典列表中搜索字符串

转载 作者:行者123 更新时间:2023-12-01 00:38:43 24 4
gpt4 key购买 nike

如何在以下 Pandas 数据框中搜索字符串 'data1'

这是可以找到字符串的位置:

df.test[0][0]['term']
'data1'

有关数据帧结构的更多信息:

df.test[0]

[{'term': 'data1', 'a': "foo", 'b': "bar"},
{'term': 'data2' ,'a': "foo", 'b': "bar"}]

type(df.test)
pandas.core.series.Series

type(df.test[0])
list

type(df.test[0][0])
dict

我尝试了什么?

我很欣赏像 df.test.str.contains('Data1') 这样的东西是必需的,但我不知道如何使用嵌套列表/字典数据结构来做到这一点

最佳答案

最简单的是转换为字符串,因此通过字典列表的字符串表示进行测试:

df.test.astype(str).str.contains('data1')

如果需要通过term键进行测试:

df['test'].apply(lambda x: any(y.get('term') == 'data1' for y in x))

或者通过字典的所有值:

df['test'].apply(lambda x: any('data1' in y.values() for y in x))

示例:

a = [{'term': 'data1', 'a': "foo", 'b': "bar"},
{'term': 'data2' ,'a': "foo", 'b': "bar"}]
b = [{'term': 'data4', 'a': "foo", 'b': "bar"},
{'term': 'data2' ,'a': "foo", 'b': "bar"}]
df = pd.DataFrame({"test": [a, b]})
print (df)
test
0 [{'term': 'data1', 'a': 'foo', 'b': 'bar'}, {'...
1 [{'term': 'data4', 'a': 'foo', 'b': 'bar'}, {'...

print (df.test.astype(str).str.contains('data1'))
0 True
1 False
Name: test, dtype: bool

print (df['test'].apply(lambda x: any(y.get('term') == 'data1' for y in x)))
0 True
1 False
Name: test, dtype: bool

print (df['test'].apply(lambda x: any('data1' in y.values() for y in x)))
0 True
1 False
Name: test, dtype: bool

关于python - Pandas 在字典列表中搜索字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57534636/

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