Python:数据框架的字典
我想把字典改成熊猫数据框Python:数据框架的字典,python,pandas,dictionary,Python,Pandas,Dictionary,我想把字典改成熊猫数据框 data = {u'Diluted Normalized EPS': [{u'date': u'2020-01-03', u'value': u'-0.446810'}, {u'date': u'2019-10-04', u'value': u'-0.765540'}, {u'date': u'2019-06-28', u'value': u '-0.574240'}, {u'date': u'2019-03-29', u'value': u'-2.063700'},
data = {u'Diluted Normalized EPS': [{u'date': u'2020-01-03', u'value': u'-0.446810'}, {u'date': u'2019-10-04', u'value': u'-0.765540'}, {u'date': u'2019-06-28', u'value': u
'-0.574240'}, {u'date': u'2019-03-29', u'value': u'-2.063700'}, {u'date': u'2018-12-28', u'value': u'-0.841380'}], u'Net Income Before Extra. Items': [{u'date': u'2020-01-03', u'value': u'-139.000000'}, {u'date': u'2019-10-04', u'value': u'-276.000000'}, {u'date': u'2019-06-28', u'value': u'-185.000000'}, {u'date': u'2019-03-29', u'value': u'-652.000000'}, {u'date': u'2018-12-28', u'value': u'-257.000000'}]}
我想转换成熊猫数据帧,如下所示
date Diluted Normalized EPS Net Income Before Extra. Items
0 2020-01-03 -0.446810 -139.000000
1 2019-10-04 -0.765540 -276.000000
2 2019-06-28 -0.574240 -185.000000
3 2019-03-29 -2.063700 -652.000000
4 2018-12-28 -0.841380 -257.000000
pd.DataFrame(data)
无法返回所需结果使用嵌套字典理解和DataFrame
构造函数:
d = {k:{x['date']: x['value'] for x in v} for k, v in data.items()}
df = pd.DataFrame(d).rename_axis('date').reset_index()
print(df)
date Diluted Normalized EPS Net Income Before Extra. Items
0 2020-01-03 -0.446810 -139.000000
1 2019-10-04 -0.765540 -276.000000
2 2019-06-28 -0.574240 -185.000000
3 2019-03-29 -2.063700 -652.000000
4 2018-12-28 -0.841380 -257.000000
运行以下代码:
df = pd.DataFrame.from_dict(data).apply(
lambda col: pd.DataFrame(col.tolist()).set_index('date').value)\
.reset_index()
步骤:
pd.DataFrame.from_dict(data)
-创建临时数据帧。
它有两列(字典的键)。每个单元格包含一个字典,
包含2个键(日期和值)pd.DataFrame(col.tolist())
-lambda函数的第一部分-
将当前列转换为另一个临时数据帧,
有两列(日期和值)设置索引(“日期”)
-将日期列更改为索引value
-仅从上述数据帧中获取value列apply(…)
-应用上述lambda函数可转换
第一个临时数据帧几乎完全符合我们的要求,即需要2个
以日期作为索引的列reset_index()
-将索引转换为常规列看起来您必须修改字典,或者考虑按顺序构建数据帧。祝你好运