为了账号安全,请及时绑定邮箱和手机立即绑定

从 pandas Series 字典列表转换为 DataFrame

从 pandas Series 字典列表转换为 DataFrame

森栏 2022-05-19 14:05:22
我有一个熊猫系列的字典。我想将其转换为 pandas DataFrame。所有字典都有“名称”和“价值”。我想将名称转换为列名和值作为行。我尝试简单地使用pd.DataFrame(mySeriesOfDicts)或将 Series 转换为首先列出但不起作用。from_dicts 给了我不好的结果:name  valuesvSum7Days 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 newPositionsCount60Days0.0        0.0         423.0        0.0..         ..          ..           ..
查看完整描述

2 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

展平内部字典并从字典列表中构造一个数据框:


d = [{d['name']:d['value'] for d in l} for l in s] # s being the pd.Series

df = 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  svSum91Days

0                      0.0         423.0         0.0          0.0

1                    100.0         424.0         1.0         12.0


查看完整回答
反对 回复 2022-05-19
?
湖上湖

TA贡献2003条经验 获得超2个赞

数据框可以从字典列表中创建。但是根据您的输出,您正在寻找转换后的数据框。


#your code goes here


import pandas as pd


#creating dummy series

data = 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 list

data = data.tolist()


# Create a dataframe

df = pd.DataFrame(data)


# Transpose it

df = df.T


# Create column names

headers = df.iloc[0]

new_df  = pd.DataFrame(df.values[1:], columns=list(headers))

print(new_df)


查看完整回答
反对 回复 2022-05-19
  • 2 回答
  • 0 关注
  • 293 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信