gpt4 book ai didi

python - 重新索引 pandas DataFrame 以填充缺失的日期

转载 作者:太空宇宙 更新时间:2023-11-03 15:00:46 25 4
gpt4 key购买 nike

我的 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

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

[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')]

不幸的是,当我运行下面的 reindex 命令时,表格完全被 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

最佳答案

从我在你的问题中看到的,你需要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

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

关于python - 重新索引 pandas DataFrame 以填充缺失的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45145276/

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