【问题标题】:Reindex pandas DataFrame to fill missing dates重新索引 pandas DataFrame 以填充缺失的日期
【发布时间】:2017-12-22 01:15:15
【问题描述】:

我在 pandas DataFrame df 中有每日数据,但缺少某些日期(例如下面的 1980-12-25)。我想重新索引 DataFrame 以添加具有 NaN 值的日期。

           date  close
None                  
0    1980-12-12  28.75
1    1980-12-15  27.25
2    1980-12-16  25.25
3    1980-12-17  25.87
4    1980-12-18  26.63
5    1980-12-19  28.25
6    1980-12-22  29.63
7    1980-12-23  30.88
8    1980-12-24  32.50
9    1980-12-26  35.50 

我已生成列表dates,其中包含我想要的完整日期集。

[Timestamp('1980-12-12 00:00:00'), Timestamp('1980-12-15 00:00:00'), Timestamp('1980-12-16 00:00:00'), Timestamp('1980-12-17 00:00:00'), Timestamp('1980-12-18 00:00:00'), Timestamp('1980-12-19 00:00:00'), Timestamp('1980-12-22 00:00:00'), Timestamp('1980-12-23 00:00:00'), Timestamp('1980-12-24 00:00:00'), Timestamp('1980-12-25 00:00:00'), Timestamp('1980-12-26 00:00:00')]

不幸的是,当我运行下面的重新索引命令时,表格完全被 NaN 填满。

df.reindex(dates)

我进行了以下检查,所有检查都很好......

>>> type(df['date'][0])
<class 'pandas._libs.tslib.Timestamp'>

>>> type(dates[0])
<class 'pandas._libs.tslib.Timestamp'>

>>> dates[0] == df['date'][0]
True

【问题讨论】:

    标签: python pandas reindex


    【解决方案1】:

    根据我在您的问题中看到的,您需要set_index()

    df
             date  close
    0  1980-12-12  28.75
    1  1980-12-15  27.25
    2  1980-12-16  25.25
    3  1980-12-17  25.87
    4  1980-12-18  26.63
    5  1980-12-19  28.25
    6  1980-12-22  29.63
    7  1980-12-23  30.88
    8  1980-12-24  32.50
    9  1980-12-26  35.50
    
    df['date']  = pd.to_datetime(df['date'])
    df.set_index('date', inplace=True)
    df.reindex(dates)
    
    df
                close
    date             
    1980-12-12  28.75
    1980-12-15  27.25
    1980-12-16  25.25
    1980-12-17  25.87
    1980-12-18  26.63
    1980-12-19  28.25
    1980-12-22  29.63
    1980-12-23  30.88
    1980-12-24  32.50
    1980-12-25    NaN
    1980-12-26  35.50
    

    您需要设置索引,以便它知道如何对齐您的新索引。这是您的预期输出吗?

    【讨论】:

    • 谢谢安德鲁!这正是问题所在。没有发现日期列不是索引。
    • 太好了,很高兴为您提供帮助。
    • 我已经尝试过这个确切的解决方案,但我收到一个值错误,我无法从重复的轴重新索引
    猜你喜欢
    • 1970-01-01
    • 2018-01-12
    • 2022-08-15
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多