gpt4 book ai didi

python - 在包含列表的数据框中搜索值

转载 作者:太空宇宙 更新时间:2023-11-03 17:14:54 25 4
gpt4 key购买 nike

我有一个如下所示的数据框:

id  points
a [c,v,b,n]
b []
c [x,a]
....

和一本字典(我也将它作为数据框):

{'a': ['j','c'],
'b': [p,r,q]
'c': [n,k,l,x,a]
....}

我想搜索字典中包含的键是否是数据帧的点,然后从字典点中删除字典中不匹配的项目。预期输出:

id  points
a [c]
b []
c [x,a]

我试过了

for key,point in my_dict.items():
if df['points'].str.contains(point).any()

但我得到TypeError: unhashable type: 'list'

我尝试将数据帧转换为字典,但搜索时间太多,因为我需要更多 for 循环。对代码或数据结构改进有什么建议吗?

编辑

数据的另一种表示:

id  points
a [c,v,b,n]
b []
c [x,a]
....

points
j,c
p,r,q
n,k,l,x,a

最佳答案

您可以调用apply并将字典值转换为集合,可以将交集转换为列表:

In [15]:
d={'a': ['j','c'],
'b': ['p','r','q'],
'c': ['n','k','l','x','a']}
d

Out[15]:
{'a': ['j', 'c'], 'b': ['p', 'r', 'q'], 'c': ['n', 'k', 'l', 'x', 'a']}

In [17]:
df['points'] = df.apply(lambda row: list(set(d[row['id']]).intersection(row['points'])), axis=1)
df

Out[17]:
id points
0 a [c]
1 b []
2 c [a, x]

至于为什么会出现错误,您试图在作为 dtype 列表的 Series 上调用 .str 方法,它们不是字符串。

关于python - 在包含列表的数据框中搜索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33734342/

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