熊猫:如何将复杂的数据框转换为更简单的数据框

问题描述 投票:-1回答:1

我在数据框中已经具有以下原始数据

{'timePeriod': {'start': '2019-09-01', 'end': '2019-09-02'},
  [{'keys': ['173419835872', 'Software'],
    'metrics': {'Cost': {'amount': '1100.23', 'unit': 'USD'}}},
   {'keys': ['921747472697', 'Hardware'],
    'metrics': {'Cost': {'amount': '2300.11', 'unit': 'USD'}}},
   {'keys': ['921747472697', 'Tax'],
    'metrics': {'Cost': {'amount': '500.00', 'unit': 'USD'}}}]
  }

我想得到一个带有五列标签的数据框:

year month acct type amt
2019 Sep 173419835872 Software 1100.23
2019 Sep 921747472697 Hardware 2300.11
2019 Sep 921747472697 Tax 500.00

我可以使用哪些df函数来解析原始数据并创建新的数据框?

谢谢。

python-3.x pandas dataframe
1个回答
0
投票

这不是很漂亮,但是我最终写了一个csv文件,然后将csv文件直接读入数据帧。

    with open('ce.csv', 'w') as cecsv:
    cecsv.write("Year|Account|Service|Cost\n")
        for i in range(0,len(df)):
            for j in range(0,len(df['groups'][i])):
              cecsv.write(df['timePeriod'][i]['start'] + "|" + 
              df['groups'][i][j]['keys'][0] + "|" + 
              df['groups'][i][j]['keys'][1] + "|" + 
              df['groups'][i][j]['metrics']['UnblendedCost']['amount'] + "\n") 
        cecsv.close()```
© www.soinside.com 2019 - 2024. All rights reserved.