使用列作为字典键将一系列字典转换为德拉帧

时间:2019-08-02 11:38:27

标签: python pandas dataframe

>>> type(required_data)

<class 'pandas.core.series.Series'>

>>> required_data

0      {u'duration': 79, u'startDate': u'2019-01-02T23:04:15Z',u'endDate': u'2019-01-02T23:05:35Z'}

1      {u'duration': 79, u'startDate': u'2019-01-02T23:04:15Z',u'endDate': u'2019-01-02T23:05:35Z'}

2      {u'duration': 79, u'startDate': u'2019-01-02T23:04:15Z',u'endDate': u'2019-01-02T23:05:35Z'}

3      {u'duration': 79, u'startDate': u'2019-01-02T23:04:15Z',u'endDate': u'2019-01-02T23:05:35Z'}

现在我要将其转换为以下格式的数据框

    startDate               endDate                 duration
0   '2019-01-02T23:04:15Z'  '2019-01-02T23:05:35Z'  79
1   '2019-01-02T23:04:15Z'  '2019-01-02T23:05:35Z'  79
2   '2019-01-02T23:04:15Z'  '2019-01-02T23:05:35Z'  79

我尝试过以下方式

创建了一个空的数据框

required_df = pd.DataFrame()
required_data.apply(lambda x:required_df.append(x,ignore_index=True))

它没有给出期望的结果。请帮忙。

2 个答案:

答案 0 :(得分:1)

您可以使用pd.DataFrame(list(requeired_data.values))。然后提供干净的DataFrame:

>>> pd.DataFrame(list(requeired_data.values))
   duration               endDate             startDate
0        79  2019-01-02T23:05:35Z  2019-01-02T23:04:15Z
1        79  2019-01-02T23:05:35Z  2019-01-02T23:04:15Z
2        79  2019-01-02T23:05:35Z  2019-01-02T23:04:15Z
3        79  2019-01-02T23:05:35Z  2019-01-02T23:04:15Z

答案 1 :(得分:1)

您的Series基本上是字典列表。使用to_list()将其转换为适当的列表,并实例化一个DataFrame似乎足够。

import pandas as pd

ser = pd.Series([{'duration' : 'hello', 'value' : 'world'}, {'duration' : 'hello', 'value' : 'world'}, {'duration' : 'hello', 'value' : 'world'}])
print(ser)
# 0    {'duration': 'hello', 'value': 'world'}
# 1    {'duration': 'hello', 'value': 'world'}
# 2    {'duration': 'hello', 'value': 'world'}
# dtype: object

df = pd.DataFrame(ser.to_list())
print(df)
#   duration  value
# 0    hello  world
# 1    hello  world
# 2    hello  world