【问题标题】:Pandas reindex to fill date indexPandas 重新索引以填充日期索引
【发布时间】:2020-07-24 08:11:19
【问题描述】:

如何reindex这个df来填补缺失的日期。

           query    min max mean
DATE                
2020-07-04  kabel   573 838 666.547619
2020-07-13  kabel   681 681 681.000000
2020-07-15  kabel   583 738 654.565217

作为我想要得到的输出

               query    min max mean
DATE                
2020-07-04  kabel   573 838 666.547619
2020-07-05  kabel   None None None
...         ...     ...  ...  ...
2020-07-12  kabel   None None None
2020-07-13  kabel   681 681 681.000000
2020-07-15  kabel   583 738 654.565217

【问题讨论】:

  • 你可以试试这个使用Series.reindex的链接:stackoverflow.com/questions/19324453/…
  • 我认为在输出中2020-07-13 之后的日期应该是2020-07-14,对吧?
  • 是的,在2020-07-13之后应该还有2020-07-14 kabel None None None

标签: python pandas dataframe datetime


【解决方案1】:

使用pd.to_datetime 将数据帧的索引转换为DatetimeIndex,然后使用DataFrame.asfreqdaily 频率重新索引数据帧,并使用Series.ffill 前向填充query 列中的值:

df.index = pd.to_datetime(df.index)
df = df.asfreq('D').assign(query=lambda x: x['query'].ffill())

结果:

print(df)
            query    min    max        mean
DATE                                       
2020-07-04  kabel  573.0  838.0  666.547619
2020-07-05  kabel    NaN    NaN         NaN
2020-07-06  kabel    NaN    NaN         NaN
2020-07-07  kabel    NaN    NaN         NaN
2020-07-08  kabel    NaN    NaN         NaN
2020-07-09  kabel    NaN    NaN         NaN
2020-07-10  kabel    NaN    NaN         NaN
2020-07-11  kabel    NaN    NaN         NaN
2020-07-12  kabel    NaN    NaN         NaN
2020-07-13  kabel  681.0  681.0  681.000000
2020-07-14  kabel    NaN    NaN         NaN
2020-07-15  kabel  583.0  738.0  654.565217

【讨论】:

    猜你喜欢
    • 2017-12-22
    • 2018-01-12
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多