这是我的数据集
我有一个奇怪的,我已经工作了一个星期,现在需要一些帮助。我有一个像这样的词典列表:
[index 0 : {'Total_Salary': 49900.0, 'Total_Value': 490.0,
'pers_1': {'value': 71.1, 'Name': 'Bob', 'Salary': 10100, 'nick_name': 'foo'},
'pers_2': {'value': 43.1, 'Name': 'Joe', 'Salary': 9200, 'nick_name': 'bar'}}
'pers_3': {'value': 42.1, 'Name': 'james', 'Salary': 9750, 'nick_name': 'sam'}}
'pers_4': {'value': 41.1, 'Name': 'rick', 'Salary': 9700, 'nick_name': 'suzy'}}
'pers_5': {'value': 23.1, 'Name': 'blop', 'Salary': 9400, 'nick_name': 'jill'}}
'pers_6': {'value': 54.1, 'Name': 'burp', 'Salary': 9280, 'nick_name': 'yup'}}
索引1 :(将有不同的总薪水,总值数,因为人们会改变,但格式保持与上面相同) ... index n:' Total_Salary' = ...,' Total_Value' = ...,person_n ... ]
dicts列表中的每个字典都有一个total_salary和total_value键。它是每个人的总和'薪水'和'价值'在人1前面通过人6。该列表有几百个序列,如上所述。我想循环遍历dicts列表并将每个dict放入一个数据帧。
理想情况下,数据框会以Team 1
为索引(然后是team 2
,team 3
等)。
答案 0 :(得分:0)
import pandas as pd
team = {
'pers_1': {'value': 71.1, 'Name': 'Bob', 'Salary': 10100, 'nick_name': 'foo'},
'pers_2': {'value': 43.1, 'Name': 'Joe', 'Salary': 9200, 'nick_name': 'bar'},
'pers_3': {'value': 42.1, 'Name': 'james', 'Salary': 9750, 'nick_name': 'sam'},
'pers_4': {'value': 41.1, 'Name': 'rick', 'Salary': 9700, 'nick_name': 'suzy'},
'pers_5': {'value': 23.1, 'Name': 'blop', 'Salary': 9400, 'nick_name': 'jill'},
'pers_6': {'value': 54.1, 'Name': 'burp', 'Salary': 9280, 'nick_name': 'yup'}}
df = (pd.DataFrame(team)
.T
.append(pd.Series({'value': df['value'].sum(),
'Salary': df['Salary'].sum()},
name='Total'))
.assign(team='team_1')
.set_index('team', append=True)
.swaplevel())
print(df)
结果
Name Salary nick_name value
team
team_1 pers_1 Bob 10100 foo 71.1
pers_2 Joe 9200 bar 43.1
pers_3 james 9750 sam 42.1
pers_4 rick 9700 suzy 41.1
pers_5 blop 9400 jill 23.1
pers_6 burp 9280 yup 54.1
Total NaN 172290 NaN 823.8
您可以为其他团队执行相同操作,然后连接所有数据框。在混合伪代码中:
all_teams_list = []
# loop for all teams
# create `df`
all_teams_list.append(df)
all_teams = pd.concat(all_teams_list)