首页 > 解决方案 > 均衡 Pandas 系列的索引以适应 Dataframe

问题描述

我有一个使用日期时间索引的熊猫数据框。我想在数据框中添加一列,该列返回特定数据切片的平均值。此列并不总是包含整个索引,我需要一种用零填充缺失部分的方法。

数据框:
[2020-7-26 | 29.3] [2020-8-02 | 28.2] [2020-8-09 | 26.7] [2020-8-16 | 24.1] [2020-8-30 | 23.2]

我希望附加的系列:注意缺少的 8 月 16 日
[2020-7-26 | 20.3] [2020-8-02 | 21.2] [2020-8-09 | 23.7] [2020-8-30 | 22.2]

有没有办法将这个系列转换成:
[2020-7-26 | 20.3] [2020-8-02 | 21.2] [2020-8-09 | 23.7] [2020-8-16 | 0.0] [2020-8-30 | 22.2]
为了能够形成这个数据框:
[2020-7-26 | 29.3 | 20.3] [2020-8-02 | 28.2 | 21.2] [2020-8-09 | 26.7 | 23.7] [2020-8-16 | 24.1 | 0.0] [2020-8-30 | 23.2 | 22.2]
提前致谢!

标签: pythonpandasdataframe

解决方案


如果我对您的理解正确,您只是想在日期时间索引上将两者结合在一起。让df您成为具有更多索引的数据框,并ser成为您缺少索引的系列。

如果df是:

           val
date    
2019-08-01  1
2019-08-02  2
2019-08-03  3

并且ser是:

date
2019-08-01    4
2019-08-03    5

应该很简单:

df.join(ser,how='left').fillna(0)

产生:

           val  val2
date        
2019-08-01  1   4.0
2019-08-02  2   0.0
2019-08-03  3   5.0

因为左连接将用 填充右侧的任何缺失nans,这fillna()将用 0 估算。

确保您的系列有一个名称,否则连接不知道如何命名您的新列。您可以 ser.name = 'column_name'在调用 join 之前进行设置,在我的例子中是'val2'.

另外,如果您不明白我为什么要打电话how='left',我建议您花一些时间阅读左、右、外、内连接是什么,因为它不仅对 python 中的预处理而且对 sql 也是非常重要的。祝你好运!


推荐阅读