我有一个带有字典的大熊猫系列:
series = pd.Series(
[[{'id': '1', 'val': 'ab'}, {'id': '2', 'val': 'abc'}], [{'id': '1', 'val': 'aa'}, {'id': '2', 'val': 'ewe'}],
[{'id': '3', 'val': 'aea'}, {'id': '4', 'val': 'te'}]],
index=['2014-01-01 22:59:00+00:00', '2014-01-02 22:59:00+00:00', '2014-01-03 21:59:00+00:00'])
2014-01-01 22:59:00+00:00 [{'id': '1', 'val': 'ab'}, {'id': '2', 'val': 'abc'}]
2014-01-02 22:59:00+00:00 [{'id': '1', 'val': 'aa'}, {'id': '2', 'val': 'ewe'}]
2014-01-03 22:59:00+00:00 [{'id': '3', 'val': 'aea'}, {'id': '4', 'val': 'te'}]
我想将其转换为Dataframe,例如:
id val
2014-01-01 22:59:00+00:00 1 ab
2014-01-01 22:59:00+00:00 2 abc
2014-01-02 22:59:00+00:00 1 aa
......
关于如何实施的任何想法? 谢谢
我尝试使用具有不同参数的pandas pd.dataframe方法。
df = pd.DataFrame(series)
答案 0 :(得分:1)
您的示例是Pandas系列,而不是DataFrame。 因此,创建一个包含两列的数据框,转换每一列并重新加入该数据框。
df = pd.concat([sample.apply(pd.Series)[column].apply(pd.Series) for column in df.columns])
print(df.head())
输出:
id val
2014-01-01 22:59:00+00:00 1 ab
2014-01-02 22:59:00+00:00 1 aa
2014-01-03 21:59:00+00:00 3 aea
2014-01-01 22:59:00+00:00 2 abc
2014-01-02 22:59:00+00:00 2 ewe
2014-01-03 21:59:00+00:00 4 te
答案 1 :(得分:0)
您可以使用explode()
方法(Pandas 0.25.0中的新增功能)垂直扩展表格,而使用apply(pd.Series)
方法扩展水平表格:
series.explode().apply(pd.Series)
输出:
id val
2014-01-01 22:59:00+00:00 1 ab
2014-01-01 22:59:00+00:00 2 abc
2014-01-02 22:59:00+00:00 1 aa
2014-01-02 22:59:00+00:00 2 ewe
2014-01-03 21:59:00+00:00 3 aea
2014-01-03 21:59:00+00:00 4 te