解压缩数据框字典并将键设置为列值

时间:2019-08-12 21:50:01

标签: python pandas dataframe

我具有以下数据帧字典(df):

([('Austria',
       Name                                     Value
 0     3 BG EMCore Convertibles Global CHF R T    5
 1     3 BG EMCore Convertibles Global R T        6
 [2 rows x 2 columns]),

('Belgium',
        Name                                    Value
 0      AG Life Alternative Investments           7
 1      AG Life Balanced                          1
 2      AG Life Bonds Global                      2
 3      AG Life Bonds Indexed                     7
 [4 rows x 2 columns])])

我想将数据转换为单个数据帧,并同时将关键字字符串设置为附加列

我首先将字典转换为数据帧列表:

mylist=[i[1] for i in df.items()]

然后我可以通过以下方式将数据框合并为单个数据框:

master_frame=pd.concat(mylist, sort=True)

但是我想将字典中的键设置为附加列

如果是这样的话,期望的结果:

       Name                                     Value     Country
 0     3 BG EMCore Convertibles Global CHF R T    5       Austria
 1     3 BG EMCore Convertibles Global R T        6       Austria
 2      AG Life Alternative Investments           7       Belgium
 3      AG Life Balanced                          1       Belgium
 4      AG Life Bonds Global                      2       Belgium
 5      AG Life Bonds Indexed                     7       Belgium

预先感谢

2 个答案:

答案 0 :(得分:2)

您尝试过吗:

final_df = pd.DataFrame()
for key, value in dictionary.items():
     df = value
     df.loc[:,'Country'] = key
     final_df = pd.concat([df, final_df], 0)
final_df

答案 1 :(得分:1)

对于dict,例如:

dfs = {'Austria': AustriaDF, 'Belgium': BelgiumDF}

您可以仅基于键添加新列,然后合并它们:

for country, df in dfs.items():
    df['Country'] = country
master_frame = pd.concat(sorted(dfs.values(), key=lambda df: df['Country'][0]), ignore_index=True)

master_frame的值:

                                      Name  Value  Country
0  3 BG EMCore Convertibles Global CHF R T      5  Austria
1      3 BG EMCore Convertibles Global R T      6  Austria
2          AG Life Alternative Investments      7  Belgium
3                         AG Life Balanced      1  Belgium
4                     AG Life Bonds Global      2  Belgium
5                    AG Life Bonds Indexed      7  Belgium
相关问题