gpt4 book ai didi

python - 处理 Pandas 中的重复日期

转载 作者:太空宇宙 更新时间:2023-11-04 04:36:21 27 4
gpt4 key购买 nike

问题是我有一个大型数据集,其中缺少日期条目并且还有重复项。我不能删除它们中的任何一个,所以我需要添加缺少的日期并将相应的列设置为 NaN。这是它的示例代码。

df = pd.DataFrame({
'timestamps': pd.to_datetime(
['2016-11-15 1:00','2016-11-16 2:00','2016-11-16 3:00','2016-11-18 4:00']),
'values':['a','b','c','d']})
df.index = pd.DatetimeIndex(df['timestamps']).floor('D')

all_days = pd.date_range(df.index.min(), df.index.max(), freq='D')

在搜索时我发现我们不应该使用 df.reindex() 因为它不能处理重复项。所以另一个解决方案是使用 df.loc[all_days] 但是,每次我将它用作 df.loc[all_days] = [0,0] 它只是说我丢失的日期不在索引中,我需要添加到数据框中。

它应该是这样的:

           timestamps             values
2016-11-15 "2016-11-15 01:00:00" a
2016-11-16 "2016-11-16 02:00:00" b
2016-11-16 "2016-11-16 03:00:00" c
2016-11-18 "2016-11-18 04:00:00" d`

对此:

timestamps             values
2016-11-15 "2016-11-15 01:00:00" a
2016-11-16 "2016-11-16 02:00:00" b
2016-11-16 "2016-11-16 03:00:00" c
2016-11-17 NaN NaN
2016-11-18 "2016-11-18 04:00:00" d

最佳答案

您可以将 all_days 设置为数据框,然后使用 df 进行外部连接,然后删除新的不必要的列:

new_df = df.join(all_days.to_frame(), how='outer').drop(0,1)

>>> new_df
timestamps values
2016-11-15 2016-11-15 01:00:00 a
2016-11-16 2016-11-16 02:00:00 b
2016-11-16 2016-11-16 03:00:00 c
2016-11-17 NaT NaN
2016-11-18 2016-11-18 04:00:00 d

关于python - 处理 Pandas 中的重复日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51621082/

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