【问题标题】:Merging dataframes with uneven time series data合并具有不均匀时间序列数据的数据帧
【发布时间】:2021-09-26 17:34:04
【问题描述】:

我有两个包含时间序列数据的数据框,其值是一个列表。我想将它们合并到一个数据框中,从而连接两个列表。棘手的部分是一个数据帧包含比另一个更多的数据点。当我对两个数据框进行“求和”时,对于不重叠的日期,这些值会显示为 NaN,而不是保留原始值。举个例子,df1 包含以下内容:

2021-09-16 [AAA,BBB]    
2021-09-17 [CCC]    
2021-09-18 [DDD]

df2 包含以下内容:

2021-09-16 [EEE]    
2021-09-17 [FFF]    
2021-09-18 []
2021-09-19 [GGG]
2021-09-20 [HHH,III]

当我执行 df1 + df2 时,我得到:

2021-09-16 [AAA,BBB,EEE]    
2021-09-17 [CCC,FFF]    
2021-09-18 [DDD]
2021-09-19 NaN
2021-09-20 NaN

相反,我希望 2021-09-19 和 2021-09-20 分别显示 [GGG] 和 [HHH,III]。解决办法是什么?

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    设置

    >>> df1
                       col
    2021-09-16  [AAA, BBB]
    2021-09-17       [CCC]
    2021-09-18       [DDD]
    
    >>> df2
                       col
    2021-09-16       [EEE]
    2021-09-17       [FFF]
    2021-09-18          []
    2021-09-19       [GGG]
    2021-09-20  [HHH, III]
    

    解决方案:DataFrame.align

    将两个数据框沿索引轴对齐,并用空列表[]填充缺失索引的值,然后我们可以使用df1 + df2轻松添加两个数据框

    d1, d2 = df1.align(df2, fill_value=[]))
    print(d1 + d2)
    
                            col
    2021-09-16  [AAA, BBB, EEE]
    2021-09-17       [CCC, FFF]
    2021-09-18          [DDD, ]
    2021-09-19            [GGG]
    2021-09-20       [HHH, III]
    

    【讨论】:

      猜你喜欢
      • 2016-07-12
      • 1970-01-01
      • 1970-01-01
      • 2013-06-11
      • 1970-01-01
      • 1970-01-01
      • 2015-05-23
      • 2021-10-07
      • 1970-01-01
      相关资源
      最近更新 更多