[英]Transform from pandas Series list of dicts to 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
.. .. .. ..
展平內部字典並從字典列表中構造一個數據框:
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
可以從字典列表中創建數據框。 但是根據您的輸出,您正在尋找轉換后的數據框。
#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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.