gpt4 book ai didi

python - 如何填写 Pandas 数据框中的任意缺失日期?

转载 作者:太空宇宙 更新时间:2023-11-04 07:29:45 25 4
gpt4 key购买 nike

我当前的数据框:

   |   user  |       date        | count|
| ------ | ------------------| -----|
| user 1 | 2017-11-09 | 3 |
| user 1 | 2017-11-12 | 4 |
| user 1 | 2017-11-14 | 5 |
| user 2 | 2017-11-11 | 2 |
| user 2 | 2017-11-12 | 6 |
| user 2 | 2017-11-14 | 7 |

我希望它是什么:

   |   user  |       date        | count|
| ------ | ------------------| -----|
| user 1 | 2017-11-09 | 3 |
| user 1 | 2017-11-10 | 0 |
| user 1 | 2017-11-11 | 0 |
| user 1 | 2017-11-12 | 4 |
| user 1 | 2017-11-13 | 0 |
| user 1 | 2017-11-14 | 5 |
| user 2 | 2017-11-09 | 0 |
| user 2 | 2017-11-10 | 0 |
| user 2 | 2017-11-11 | 2 |
| user 2 | 2017-11-12 | 6 |
| user 2 | 2017-11-13 | 0 |
| user 2 | 2017-11-14 | 7 |

有什么建议吗?我尝试过重新采样方法,但我不确定它是否有效。此外,我的日期已经转换为日期时间对象。

编辑:我很感谢您的回答,但我意识到我的日期列有多个相同的日期,现在索引它是一个问题,因为有重复的日期。有没有办法解决不需要索引(或绕过它?)的问题

最佳答案

使用asfreq使用 DatetimeIndex,所以首先 set_index :

#if necessary convert to datetimes
#df['date'] = pd.to_datetime(df['date'])

df = df.set_index('date').asfreq('d', fill_value=0)
print (df)
count
date
2017-11-09 3
2017-11-10 0
2017-11-11 0
2017-11-12 4
2017-11-13 0
2017-11-14 5

如果有重复的DatetimeIndex,则需要resample并使用一些聚合函数,如sum:

df = df.set_index('date').resample('d').sum()

如果不需要所有日期组合,请编辑:

df = (df.set_index('date').groupby('user')['count']
.apply(lambda x: x.asfreq('d', fill_value=0))
.reset_index())
print (df)
user date count
0 user 1 2017-11-09 3
1 user 1 2017-11-10 0
2 user 1 2017-11-11 0
3 user 1 2017-11-12 4
4 user 1 2017-11-13 0
5 user 1 2017-11-14 5
6 user 2 2017-11-11 2
7 user 2 2017-11-12 6
8 user 2 2017-11-13 0
9 user 2 2017-11-14 7

EDIT1 对于所有日期组合:

mux = pd.MultiIndex.from_product([df['user'].unique(), pd.date_range(df['date'].min(), df['date'].max())],
names=['user','date'])
df = df.set_index(['user', 'date']).reindex(mux, fill_value=0).reset_index()
print (df)
user date count
0 user 1 2017-11-09 3
1 user 1 2017-11-10 0
2 user 1 2017-11-11 0
3 user 1 2017-11-12 4
4 user 1 2017-11-13 0
5 user 1 2017-11-14 5
6 user 2 2017-11-09 0
7 user 2 2017-11-10 0
8 user 2 2017-11-11 2
9 user 2 2017-11-12 6
10 user 2 2017-11-13 0
11 user 2 2017-11-14 7

关于python - 如何填写 Pandas 数据框中的任意缺失日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50608966/

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