Python:如何将 Dataframes 字典变成一个大数据框,其中列名是前一个字典的键?

新手上路,请多包涵

所以我的数据框是由许多单独的 excel 文件组成的,每个文件的文件名都是日期,电子表格中当天的水果价格是这样的,所以电子表格看起来像这样:

 15012016:
Fruit     Price
Orange    1
Apple     2
Pear      3

16012016:
Fruit     Price
Orange    4
Apple     5
Pear      6

17012016:
Fruit     Price
Orange    7
Apple     8
Pear      9

因此,为了将所有这些信息放在一起,我运行以下代码将所有信息放入数据框字典中(所有水果价格文件都存储在 ‘C:\Fruit_Prices_by_Day’

 #find all the file names
file_list = []
for x in os.listdir('C:\Fruit_Prices_by_Day'):
    file_list.append(x)

file_list= list(set(file_list))

d = {}

for date in Raw_list:
    df1 = pd.read_excel(os.path.join('C:\Fruit_Prices_by_Day', date +'.xlsx'), index_col = 'Fruit')
    d[date] = df1

这就是我被卡住的部分。然后我如何将这个字典变成一个数据框,其中列名是字典键,即日期,这样我就可以在同一个数据框中获得每天每种水果的价格,例如:

           15012016   16012016   17012016
Orange    1          4          7
Apple     2          5          8
Pear      3          6          9

原文由 pakkunrob 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 438
1 个回答

You can try first set_index of all dataframes in comprehension and then use concat with remove last level of multiindex in columns:

  print d
{'17012016':     Fruit  Price
0  Orange      7
1   Apple      8
2    Pear      9, '16012016':     Fruit  Price
0  Orange      4
1   Apple      5
2    Pear      6, '15012016':     Fruit  Price
0  Orange      1
1   Apple      2
2    Pear      3}
d = { k: v.set_index('Fruit') for k, v in d.items()}

df = pd.concat(d, axis=1)
df.columns = df.columns.droplevel(-1)
print df
        15012016  16012016  17012016
Fruit
Orange         1         4         7
Apple          2         5         8
Pear           3         6         9

原文由 jezrael 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题