【问题标题】:How to merge two pandas data.frame into one, by time index, keeping all values from both of them如何按时间索引将两个 pandas data.frame 合并为一个,同时保留它们的所有值
【发布时间】:2020-10-16 15:11:57
【问题描述】:

我必须使用时间索引来熊猫数据框。一个是实时序列,另一个是理想的时间序列(我想要的所有日期)。我想按日期合并它们,但保留所有值,甚至是 NaN 值。

创建实时序列:

start_date = '2019-01-01'
end_date = '2020-01-01'
rows,cols = 51,1
data = np.random.rand(51)
tidx = pd.date_range(start_date, periods=rows, freq='16d')
data_frame = pd.DataFrame(data, columns=['EVI'], index=tidx)
print(data_frame)

输出:

EVI
2019-01-01  0.395097
2019-01-17  0.300081
2019-02-02  0.080104
......
......

用 NaN 值创建理想的时间序列(我只想要索引)

ideal_tidx = pd.date_range(start_date, end_date, freq='8d')
dummy_data = np.empty((ideal_tidx.size))
dummy_data[:] = np.nan
dummy_data_frame = pd.DataFrame(dummy_data, columns=['EVI'], index=ideal_tidx)

输出:

            EVI
2019-01-01  NaN
2019-01-09  NaN
2019-01-17  NaN
....

我想合并有这样的东西:

  EVI
2019-01-01  0.395097
2019-01-09  NaN
2019-01-17  0.300081
2019-01-25  NaN
2019-02-02  0.080104
....

【问题讨论】:

    标签: python pandas numpy dataframe time-series


    【解决方案1】:

    只需使用外部联接,然后删除您的虚拟数据框的不必要列

    df = data_frame.merge(dummy_data_frame, left_index =True, rigth_index=True, how='outer',
        suffixes = ('', '_dummy'))
    df.drop(columns='EVI_dummy', inplace=True)
    

    【讨论】:

      猜你喜欢
      • 2014-04-30
      • 2012-08-12
      • 2020-06-23
      • 2020-09-04
      • 2017-09-02
      • 1970-01-01
      • 2012-11-14
      • 2015-04-26
      • 2011-03-24
      相关资源
      最近更新 更多