首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从多个字典值列表创建数据帧

从多个字典值列表创建数据帧
EN

Stack Overflow用户
提问于 2021-03-20 15:33:45
回答 1查看 81关注 0票数 0

我有一个如下代码,

代码语言:javascript
复制
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 

在这段代码中,我从另一个字典中提取值。它将循环通过不同的公司,这就是为什么我在键中使用格式命名。输出包含每个公司的以上5列(年份、CR、ICR、D/E、D/A)。

正在打印的输出具有大量的NA值,在此之后,我希望公共列是所有公司的年份,并打印以下列: C1_CR、C2_CR、C3_CR、C1_ICR、C2_ICR、C3_ICR、...C3_D/A。

我尝试使用以下代码进行提取,

代码语言:javascript
复制
pd.concat(safety_df.values())

这个的示例输出..

在这里,它提取每个列表的值,但由于for循环?

我也尝试过groupby,但不起作用?

如何将年份设置为公共列,其他值并排打印。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-20 15:56:06

使用axis=1将列连接起来:

代码语言:javascript
复制
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)

这导致了

代码语言:javascript
复制
            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

注意,我已经显式地将索引设置为' year‘列,并且在我的示例中,我已经从'c’列中删除了第一年。这是为了显示连接时不同数据帧的索引是如何匹配的。如果将索引保留为其标准值,您将获得不同步的年份,并在列'c‘的底部显示一个NaN值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66719264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档