gpt4 book ai didi

python - 如何在python3中对字典元素进行分组

转载 作者:太空宇宙 更新时间:2023-11-04 04:15:30 25 4
gpt4 key购买 nike

我有像下面这样的字典,试图将字典与成员的进入/退出时间分组。

summary = {
0: {
'member_id': 10,
'entry_time': '08:10 PM',
'entry_device': 'Front',
'exit_time': None,
'exit_device': None
},
1: {
'member_id': 8,
'entry_time': '10:10 PM',
'entry_device': 'Front',
'exit_time': None,
'exit_device': None
},
2: {
'member_id': 10,
'entry_time': None,
'entry_device': None,
'exit_time': '09:05 PM',
'exit_device': 'Gate'
},
3: {
'member_id': 8,
'entry_time': None,
'entry_device': None,
'exit_time': '11:55 PM',
'exit_device': 'Gate'
},
4: {
'member_id': 10,
'entry_time': '11:56 PM',
'entry_device': 'Front',
'exit_time': None,
'exit_device': None
}
}

这是我的代码,只是卡在这里。尝试为摘要中的元素附加 member_list

summary_data = {}
for i, _ in summary.items():
summary_data[str(i)] = {}
member_list = []
member_list.append(summary_data[i]['member_id'])

需要在新字典中为成员的进入和退出时间分组

summary = {
0: {
'member_id': 10,
'entry_time': '08:10 PM',
'entry_device': 'Front',
'exit_time': '09:05 PM',
'exit_device': 'Gate'
},
1: {
'member_id': 8,
'entry_time': '10:10 PM',
'entry_device': 'Front',
'exit_time': '11:55 PM',
'exit_device': 'Gate'
},
2: {
'member_id': 10,
'entry_time': '11:56 PM',
'entry_device': 'Front',
'exit_time': '-',
'exit_device': '-'
},
}

最佳答案

你可以使用 pandas

首先按member_id 对值进行排序,然后使用shift 填充相应entry_time 的下一个exit_time。使用 drop_duplicates 删除具有相同 member_idexit_time

的重复行
import pandas as pd
import numpy as np

df = pd.DataFrame.from_dict(summary, orient='index')

df = df.sort_values(by='member_id')
df0 = df.shift(-1)

df['exit_time'] = np.where(df['exit_time'].isnull(), df0['exit_time'], df['exit_time'])
df['exit_device'] = np.where(df['exit_device'].isnull(), df0['exit_device'], df['exit_device'])
df = df.drop_duplicates(subset=['member_id','exit_time'], keep='first')

# if you want to fill nan with `-` then use below
# df = df.fillna("-")

print(df.to_dict(orient='records'))

输出:

[{'entry_device': 'Front',                                                                                                              
'entry_time': '10:10 PM',
'exit_device': 'Gate',
'exit_time': '11:55 PM',
'member_id': 8},
{'entry_device': 'Front',
'entry_time': '08:10 PM',
'exit_device': 'Gate',
'exit_time': '09:05 PM',
'member_id': 10},
{'entry_device': 'Front',
'entry_time': '11:56 PM',
'exit_device': nan,
'exit_time': nan,
'member_id': 10}]

关于python - 如何在python3中对字典元素进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55513654/

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