簡體   English   中英

從多個字典值列表創建 dataframe

[英]Create a dataframe from multiple list of dictionary values

我有如下代碼,

safety_df ={}
for key3,safety in analy_df.items():
    safety = pd.DataFrame({"Year":safety['index'],
                      '{}'.format(key3)+"_CR":safety['CURRENT'],
                      '{}'.format(key3)+"_ICR":safety['ICR'],
                      '{}'.format(key3)+"_D/E":safety['D/E'],
                      '{}'.format(key3)+"_D/A":safety['D/A']})
    safety_df[key3] = safety 

在這段代碼中,我從另一個字典中提取值。 它將遍歷我為什么在 key 中使用 format 命名的各個公司。 output 包含每個公司的上述 5 列(年、CR、ICR、D/E、D/A)。

正在打印的 Output 具有大量 NA 值,在此之后,我想要所有公司的公共列,即年份,並打印以下列,即 C1_CR、C2_CR、C3_CR、C1_ICR、C2_ICR、C3_ICR、...C3_D/A..

我嘗試使用以下代碼進行提取,

pd.concat(safety_df.values())

樣品 output 這個..

在此處輸入圖像描述

在這里它為每個列表提取值,但是由於 for 循環而打印出 NA 值?

我也嘗試使用 groupby 並沒有成功?

如何將年份設置為公共列,並並排打印其他值。

謝謝

使用axis=1沿列連接:

import numpy as np
import pandas as pd

years = np.arange(2010, 2021)
n = len(years)
c1 = np.random.rand(n)
c2 = np.random.rand(n)
c3 = np.random.rand(n)

frames = {
    'a': pd.DataFrame({'year': years, 'c1': c1}),
    'b': pd.DataFrame({'year': years, 'c2': c2}),
    'c': pd.DataFrame({'year': years[1:], 'c3': c3[1:]}),
}
for key in frames:
    frames[key].set_index('year', inplace=True)

df = pd.concat(frames.values(), axis=1)
print(df)

這導致

            c1        c2        c3
year
2010  0.956494  0.667499       NaN
2011  0.945344  0.578535  0.780039
2012  0.262117  0.080678  0.084415
2013  0.458592  0.390832  0.310181
2014  0.094028  0.843971  0.886331
2015  0.774905  0.192438  0.883722
2016  0.254918  0.095353  0.774190
2017  0.724667  0.397913  0.650906
2018  0.277498  0.531180  0.091791
2019  0.238076  0.917023  0.387511
2020  0.677015  0.159720  0.063264

請注意,我已將索引明確設置為“年份”列,在我的示例中,我已從“c”列中刪除了第一年。 這是為了顯示連接時不同數據幀的索引如何匹配。 如果將索引保留為其標准值,您將獲得不同步的年份,並在列“c”的底部出現 NaN 值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM