gpt4 book ai didi

python - 根据businessdate索引估算数据框中多列的缺失日期

转载 作者:行者123 更新时间:2023-12-01 02:01:53 24 4
gpt4 key购买 nike

我有一个具有以下性质的数据框

A_DATE       A_VALUE      B_DATE       B_VALUE     C_DATE      C_VALUE
2014-04-04 2.1 2014-04-04 4.8 2014-04-04 0.6
2014-04-05 2.3 2014-04-08 4.9 2014-04-05 0.8
2014-04-09 2.2 2014-04-09 4.6 2014-04-08 0.2

我有一个通过

生成的日期时间系列
 pd.bdate_range('2013-03-27', '2018-03-28')

我怎样才能有一个如下所示的数据框:

INDEX         A_DATE       A_VALUE      B_DATE       B_VALUE     C_DATE      C_VALUE
2014-04-04 2014-04-04 2.1 2014-04-04 4.8 2014-04-04 0.6
2014-04-05 2014-04-05 2.3 NA NA 2014-04-05 0.8
2014-04-08 NA NA 2014-04-08 4.9 2014-04-08 0.2
2014-04-09 2014-04-09 2.2 2014-04-09 4.6 NA NA

我知道诸如pd.merge_asofpd.merge_ordered之类的函数,但是我假设我必须首先将数据帧拆分为多个子集,然后再应用合并回来根据 pd.bdate_range 生成的索引组合所有数据帧?任何其他方法都会非常有帮助

一如既往的感谢

最佳答案

我建议将所有列转换为 DatatimeIndex 而不是多个 datetime 列:

idx = pd.bdate_range('2014-04-01', '2014-04-10')
df.columns = df.columns.str.split('_', expand=True)
df = (df.stack(0)
.reset_index(level=0, drop=True)
.set_index('DATE', append=True)['VALUE']
.unstack(level=0)
.reindex(idx))
print (df)
A B C
2014-04-01 NaN NaN NaN
2014-04-02 NaN NaN NaN
2014-04-03 NaN NaN NaN
2014-04-04 2.1 4.8 0.6
2014-04-07 NaN NaN NaN
2014-04-08 NaN 4.9 0.2
2014-04-09 2.2 4.6 NaN
2014-04-10 NaN NaN NaN

说明:

  1. 第一split列到MultiIndex
  2. reshape stack按第一级
  3. 删除第一级 reset_index
  4. DATE附加到MultiIndex
  5. reshape unstack
  6. 最后reindex 日期时间索引

关于python - 根据businessdate索引估算数据框中多列的缺失日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49528597/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com