gpt4 book ai didi

python - 遍历 pandas 列并附加一组字典?

转载 作者:行者123 更新时间:2023-12-04 00:52:53 24 4
gpt4 key购买 nike

我希望遍历 pandas 数据框中的大约 1000 万行,并将它们添加到已经存在的集合字典中。

例如像这样的字典

x = {10: {1, 2, 3, 5}, 12: {6, 7, 8, 9, 10}}

像这样的数据框:

d = {'ID': [10, 10, 10, 12, 12, 12], 'Another_ID': [1, 4, 6, 6, 7, 13]}
df = pd.DataFrame(data=d)

ID Another_ID

10 1
10 4
10 6
12 6
12 7
12 13

我想遍历行并添加 ID“尚未看到”的新值。我想要这样的结果。

x = {10: {1, 2, 3, 4, 5, 6}, 12: {6, 7, 8, 9, 10, 13}}

我已经尝试使用如下所示的简单函数进行迭代。

for i in df [['ID' , 'Another_ID' ]] .values():
dict[i[0]].add(i[1])

我可以通过像下面这样说来手动添加值,但不能循环执行!

  dict[10].add(6)

如果有人知道如何遍历这两个 pandas 列并向集合中添加新值,请告诉我!

  • 请记住,这必须相对较快地完成,因为有 1000 万行

谢谢!

最佳答案

您可以使用 groupbyagg 将 df 转换为与“x”类似的格式:

x2 = df.groupby('ID')['Another_ID'].agg(set).to_dict()
print (x2)
# {10: {1, 4, 6}, 12: {6, 7, 13}}

现在,我们使用一个表达式合并两个字典:

x3 = {k: x.get(k, set()) | x2.get(k, set()) for k in x}
print (x3)
# {10: {1, 2, 3, 4, 5, 6}, 12: {6, 7, 8, 9, 10, 13}}

或者,对于就地合并(如果 x 大而 x2 小则更有意义):

for k in x2:
x[k] = x2[k] | x.get(k, set())

print (x)
# {10: {1, 2, 3, 4, 5, 6}, 12: {6, 7, 8, 9, 10, 13}}

其中 | 运算符表示两个集合操作数的集合并集。

关于python - 遍历 pandas 列并附加一组字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65100554/

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