猿问

从 pandas Series 字典列表转换为 DataFrame

我有一个熊猫系列的字典。我想将其转换为 pandas DataFrame。所有字典都有“名称”和“价值”。我想将名称转换为列名和值作为行。


我尝试简单地使用pd.DataFrame(mySeriesOfDicts)或将 Series 转换为首先列出但不起作用。


from_dicts 给了我不好的结果:


name  value

svSum7Days 0.0 

svSum91Days 0.0 

svSum364Days 423.0 

newPositionsCount60Days 0.0 

当我尝试添加 orient='index' 我得到 AttributeError: 'list' object has no attribute 'values'


我的系列的一排:


[{'name': 'svSum7Days', 'value': 0.0},

 {'name': 'svSum91Days', 'value': 0.0},

 {'name': 'svSum364Days', 'value': 423.0},

 {'name': 'newPositionsCount60Days', 'value': 0.0}]

系列几切行:


0      [{'name': 'svSum7Days', 'value': 0.0}, {'name'...

1      [{'name': 'svSum7Days', 'value': 5.0}, {'name'...

2      [{'name': 'svSum7Days', 'value': 0.0}, {'name'...

3      [{'name': 'svSum7Days', 'value': 0.0}, {'name'...

我想将其转换为形式:


svSum7Days svSum91Days svSum364Days newPositionsCount60Days

0.0        0.0         423.0        0.0

..         ..          ..           ..


森栏
浏览 294回答 2
2回答

慕虎7371278

展平内部字典并从字典列表中构造一个数据框:d = [{d['name']:d['value'] for d in l} for l in s] # s being the pd.Seriesdf = pd.DataFrame(d)快速检查 -s = pd.Series([[{'name': 'svSum7Days', 'value': 0.0}, {'name': 'svSum91Days', 'value': 0.0}, {'name': 'svSum364Days', 'value': 423.0}, {'name': 'newPositionsCount60Days', 'value': 0.0}],          [{'name': 'svSum7Days', 'value': 1.0}, {'name': 'svSum91Days', 'value': 12.0}, {'name': 'svSum364Days', 'value': 424.0}, {'name': 'newPositionsCount60Days', 'value': 100.0}]])d = [{d['name']:d['value'] for d in l} for l in s]# [{'svSum7Days': 0.0, 'svSum91Days': 0.0, 'svSum364Days': 423.0, #   'newPositionsCount60Days': 0.0}, {'svSum7Days': 1.0, ...pd.DataFrame(d)    newPositionsCount60Days  svSum364Days  svSum7Days  svSum91Days0                      0.0         423.0         0.0          0.01                    100.0         424.0         1.0         12.0

湖上湖

数据框可以从字典列表中创建。但是根据您的输出,您正在寻找转换后的数据框。#your code goes hereimport pandas as pd#creating dummy seriesdata = pd.Series([{'name': 'svSum7Days', 'value': 0.0}, {'name': 'svSum91Days', 'value': 0.0}, {'name': 'svSum364Days', 'value': 423.0}, {'name': 'newPositionsCount60Days', 'value': 0.0}])# Convert Series to listdata = data.tolist()# Create a dataframedf = pd.DataFrame(data)# Transpose itdf = df.T# Create column namesheaders = df.iloc[0]new_df  = pd.DataFrame(df.values[1:], columns=list(headers))print(new_df)
随时随地看视频慕课网APP

相关分类

Python
我要回答