python - 日期不匹配时如何在 Pandas 中加入时间序列?

标签 python join pandas time-series

我在 pandas 中有两个时间序列/数据帧,我需要从一个中获取索引,并使用最后一个值结转从另一个中提取匹配值。

示例:

从帧 A 和 B 开始,我想制作 C,它与 B 具有相同的日期,但有一个额外的列显示该日期之前 A 的最后观察值。

>>> A
        Date   Y
0 2010-01-01   6
1 2010-09-15   9
2 2011-05-01  12
>>> B
        Date  X
0 2009-02-01  1
1 2010-02-01  2
2 2010-03-01  3
3 2010-12-21  4
4 2011-08-01  5
>>> C
        Date  X   Y
0 2009-02-01  1 NaN
1 2010-02-01  2   6
2 2010-03-01  3   6
3 2010-12-21  4   9
4 2011-08-01  5  12

最佳答案

您可以使用.asof 函数。请注意,.asof 仅适用于以 pd.DatetimeIndex 为索引的 pd.Series 对象。

# must use Date as index
df_A = df_A.set_index('Date')
df_B = df_B.set_index('Date')

# asof
df_B['Y'] = df_A['Y'].asof(df_B.index)

            X   Y
Date             
2009-02-01  1 NaN
2010-02-01  2   6
2010-03-01  3   6
2010-12-21  4   9
2011-08-01  5  12

关于python - 日期不匹配时如何在 Pandas 中加入时间序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31647789/

相关文章:

python - python中的自定义日期格式解析

postgresql - 为连接表查找(更大的)最接近的值

python - 如何从 DataFrame 中删除多列中具有重复字符串的行?

python - 如何读取 Pandas 中的html表并输出到数据框而不是列表

python - 在组内添加缺失的行

python - 使用 odo 将巨大的 h5 文件与多个数据集合并为一个

python - 使用pywin32,Dispatch和DispatchEx有什么区别?

javascript - 将字符串转换为 Canvas 绘图的引用点

r - 加入两个数据框 - 通过组合保持属性

sql - Sequelize 包含、连接、限制关联表