gpt4 book ai didi

Python:使用 pandas 数据帧中的数据更新字典

转载 作者:太空宇宙 更新时间:2023-11-03 16:28:42 26 4
gpt4 key购买 nike

所以,我有一个像这样的 pandas 数据框。

         mac_address         City
0 00:03:7f:05:c0:06 Kolkata
1 00:08:22:1c:50:07 Bhubaneswar
2 00:08:22:1c:50:07 Mumbai
3 00:08:22:1c:50:07 Mumbai
4 00:08:22:1c:50:07 Kolkata
5 00:08:22:24:cc:fb Bhubaneswar
6 00:08:22:24:f8:02 Mumbai
7 00:08:22:24:f8:02 Kolkata
8 00:08:22:24:f8:02 Mumbai
9 00:08:22:24:f8:02 Bhubaneswar

现在这里的唯一键是 mac_address 所以我想从一个空的 JSON 文档开始。为此,我将从 python 中的字典开始,稍后我可以将其转储到 JSON 中。我不知道如何从空字典开始(你也可以帮忙),所以,我从一个值开始。现在,对于数据帧的每个新行,如果 mac_address 也是 dict 的索引,如果 mac_id 存在,则更新相应的城市和城市计数。如果不存在,则添加一个新字段(如果称为字段),其索引作为新的 mac_address 并相应地存储该值。这是要开始的字典。

data = {"00:08:22:24:f8:02": {
"mac_address" : "00:08:22:24:f8:02",
"cities" :
[
{'name': 'Bhubaneswar', 'count': 12},
{'name': 'Kolkata', 'count': 4},
{'name': 'Mumbai', 'count': 6}
]
}

}

城市数量没有。 mac_address 访问某个城市的次数。通过阅读这一特定行,我想更新一个名为 Bhubneswar 的城市和 Count 1。

更新 这里的问题是如何直接从数据帧逐行更新字典。我不知何故未能解释这一点。此更新可能有助于人们理解。

最佳答案

你可以构建你的字典,它可以保存为 JSON 文件,如下所示:

In [129]: %paste
(df.groupby(['mac_address','City'])
.size()
.reset_index()
.rename(columns={'City':'name',0:'count'})
.groupby('mac_address')
.apply(lambda x: {'mac_address':x.name, 'cities': x[['name','count']].to_dict('r')})
.to_dict()
)
## -- End pasted text --
Out[129]:
{'00:03:7f:05:c0:06': {'cities': [{'count': 1, 'name': 'Kolkata'}],
'mac_address': '00:03:7f:05:c0:06'},
'00:08:22:1c:50:07': {'cities': [{'count': 1, 'name': 'Bhubaneswar'},
{'count': 1, 'name': 'Kolkata'},
{'count': 2, 'name': 'Mumbai'}],
'mac_address': '00:08:22:1c:50:07'},
'00:08:22:24:cc:fb': {'cities': [{'count': 1, 'name': 'Bhubaneswar'}],
'mac_address': '00:08:22:24:cc:fb'},
'00:08:22:24:f8:02': {'cities': [{'count': 1, 'name': 'Bhubaneswar'},
{'count': 1, 'name': 'Kolkata'},
{'count': 2, 'name': 'Mumbai'}],
'mac_address': '00:08:22:24:f8:02'}}

关于更新 Mongo DB 中的嵌套字段,请参阅此问题和答案:MongoDB - Update objects in a document's array (nested updating)

关于Python:使用 pandas 数据帧中的数据更新字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37784660/

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