首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将多个未对齐的数据帧合并为单个pandas数据帧

将多个未对齐的数据帧合并为单个pandas数据帧
EN

Stack Overflow用户
提问于 2013-06-09 01:47:01
回答 1查看 3.6K关注 0票数 5

我有多个包含股票价格的数据框,我希望将这些数据框对齐成一个仅包含所有股票收盘价的数据框。

我希望所有数据框中的所有日期都会出现在date-column(index)和"NA“中,以防股票在该日期没有收盘价。

具有两个数据帧(df1和df2)的示例:

代码语言:javascript
复制
In [5]: df1
Out[5]:
            Open   High   Low    Close
Date1
2012-01-05  22.00  22.66  23.11  24.04
2012-01-04  24.04  23.80  23.08  22.16
2012-01-03  22.16  21.27  20.42  21.24
2012-01-01  21.24  22.30  22.52  22.30

In [7]: df2
Out[7]:
             Open   High    Low  Close
Date1
2012-01-07  23.00  21.66  25.11  21.04
2012-01-06  22.00  22.66  23.11  24.04
2012-01-04  24.04  23.80  23.08  22.16
2012-01-02  22.16  21.27  20.42  21.24
2012-01-01  21.24  22.30  22.52  22.30

现在我可以做

代码语言:javascript
复制
In [8]: frame=pd.DataFrame({"df1.Close":df1["Close"], "df2.Close":df2["Close"]})

结果不出所料:

代码语言:javascript
复制
In [9]: frame
Out[9]:
            df1.Close  df2.Close
Date1
2012-01-01      22.30      22.30
2012-01-02        NaN      21.24
2012-01-03      21.24        NaN
2012-01-04      22.16      22.16
2012-01-05      24.04        NaN
2012-01-06        NaN      24.04
2012-01-07        NaN      21.04

我需要如何更改代码才能对动态数量的数据帧执行相同的操作?现在,我有8个数据帧需要这样对齐。有没有办法遍历数据帧列表并像上面那样对齐它们-而不是手动绑定数据帧名称(比喻地说,就像df和df7一样)?

提前感谢并致以亲切的问候!德克

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-09 02:22:12

如果你有一个列表中的数据框(我的意思是实际的数据框对象,而不是它们的名称),它看起来像这样:

代码语言:javascript
复制
dflist = [df1, df2, df3, df4, df5, df6, df7, df8]

然后,下面的代码应该能做你想要的事情:

代码语言:javascript
复制
frame = {}
for idx, df in enumerate(dflist):
    n = idx+1  # Since lists are 0-indexed
    name = "df{0:d}.Close".format(n)
    close = df["Close"]
    frame[name] = close

您可以使用字典理解来更简洁地完成这项工作,但在示例代码中,为了便于理解,我更喜欢更明确地拼写出来。作为参考,字典的理解应该是这样的:

代码语言:javascript
复制
{"df{0:d}.Close".format(idx+1): df["Close"] for idx, df in enumerate(dflist)}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17002186

复制
相关文章

相似问题

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