[英]convert list of dicts to pandas dataframe
這是我的數據集
我有一個奇怪的人已經工作了一個星期,現在需要一些幫助。 我有這樣的字典列表:
[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 :(總薪水,總人數會有所不同,因為人員會有所變化,但格式保持不變)...索引n:“總薪水” = ...,“總價值” = ... ,person_n ...]
字典列表中的每個詞典都有一個total_salary和total_value鍵。 它是第1個人到第6個人前面每個人的“工資”和“價值”之和。 列表中有數百個字典,就像上面附加的一樣。 我想遍歷字典列表,並將每個字典放入一個數據幀。
理想情況下,該數據幀將以Team 1
作為索引(然后是team 2
, team 3
等)。
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.