繁体   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