python pandas .asfreq() 函数返回 NaN

python pandas .asfreq() function giving back NaN

所以我试图将我的数据从每月一次的频率更改为更好的情节。我的代码是:

ice_cream_interest = pd.read_excel('book1.xlsx')
ice_cream_interest.set_index('Month', inplace= True)
ice_cream_interest = ice_cream_interest.asfreq(pd.infer_freq(ice_cream_interest.index))

加上ice_cream_interest本身的数据是这样的:

Month   interest
0   2004-01 20
1   2004-02 21
2   2004-03 22
3   2004-04 25
4   2004-05 29

但是在我 运行 我的代码之后,它给出了:

    interest
Month   
2004-01-01  NaN
2004-02-01  NaN
2004-03-01  NaN
2004-04-01  NaN
2004-05-01  NaN

所以我想知道为什么 asfreq 返回 NaN,以及如何解决它。谢谢!

asfreq 文档指定:

The values corresponding to any timesteps in the new index which were not present in the original index will be null (NaN), unless a method for filling such unknowns is provided (see the method parameter below).

当您从月期间更改为月的第一天时,您更改了索引并丢失了所有数据。

如果您需要重新采样,请使用 resample 方法。

但是,在这里您可以将月份转换为日期:

ice_cream_interest = (ice_cream_interest
 .assign(Date=lambda d: pd.to_datetime(d['Month']))
 .set_index('Date')
 .drop(columns='Month')
 )

输出:

            interest
Date                
2004-01-01        20
2004-02-01        21
2004-03-01        22
2004-04-01        25
2004-05-01        29