我从python中的Web服务获取了一些Json dict对象格式的嵌套输出。输出以嵌套的Json dict对象的形式出现。现在,当我尝试将其转换为python中的DataFrame时,不将父键视为列。一键之下有五个要素。我希望总共6列将出现在数据框中。
import pandas as pd
data = {'2019-04-04 05:59:00':
{'1. open': '1353.5500',
'2. high': '1354.8000',
'3. low': '1353.0500',
'4. close': '1353.0500',
'5. volume': '25924'},
'2019-04-04 05:58:00': {'1. open': '1354.2500',
'2. high': '1354.2500',
'3. low': '1353.4000',
'4. close': '1353.4500',
'5. volume': '38418'}
}
df1=pd.DataFrame(data)
print(df1)
"""
Output --
2019-04-04 05:59:00 2019-04-04 05:58:00
1. open 1353.5500 1354.2500
2. high 1354.8000 1354.2500
3. low 1353.0500 1353.4000
4. close 1353.0500 1353.4500
5. volume 25924 38418
"""
df2=df1.transpose()
print(df2)
"""
Output --
1. open 2. high 3. low 4. close 5. volume
2019-04-04 05:59:00 1353.5500 1354.8000 1353.0500 1353.0500 25924
2019-04-04 05:58:00 1354.2500 1354.2500 1353.4000 1353.4500 38418
"""
这里第一个日期字段被视为索引,因此我的第一列从(1.open)开始,但我需要的第一列应该是日期。
对此有所帮助。
结果应该像这样:
"""
Index Date 1. open 2. high 3. low 4. close 5. volume
0 2019-04-04 05:59:00 1353.5500 1354.8000 1353.0500 1353.0500 25924
1 2019-04-04 05:58:00 1354.2500 1354.2500 1353.4000 1353.4500 38418
"""
答案 0 :(得分:1)
df2.rename_axis(index='Date').reset_index()
给你:
Date 1. open 2. high 3. low 4. close 5. volume
0 2019-04-04 05:58:00 1354.2500 1354.2500 1353.4000 1353.4500 38418
1 2019-04-04 05:59:00 1353.5500 1354.8000 1353.0500 1353.0500 25924
还请注意,有一种使用df2
构建data
的简单方法:
df2 = pd.DataFrame.from_dict(data, orient='index')
将两个部分放在一起:
pd.DataFrame.from_dict(data, orient='index').rename_axis(index='Date').reset_index()
要命名索引,可以在末尾添加.rename_axis(index='Index')
Date 1. open 2. high 3. low 4. close 5. volume
Index
0 2019-04-04 05:58:00 1354.2500 1354.2500 1353.4000 1353.4500 38418
1 2019-04-04 05:59:00 1353.5500 1354.8000 1353.0500 1353.0500 25924