gpt4 book ai didi

python - 填写 Pandas 数据框中缺少的小时数

转载 作者:行者123 更新时间:2023-12-03 21:22:20 25 4
gpt4 key购买 nike

我有一个包含每小时数据的数据框:

area     date         hour      output
H1 2018-07-01 07:00:00 150
H1 2018-07-01 08:00:00 150
H1 2018-07-01 09:00:00 100
H1 2018-07-01 11:00:00 150
H2 2018-07-01 09:00:00 100
H2 2018-07-01 10:00:00 50
H2 2018-07-01 11:00:00 50
H2 2018-07-01 12:00:00 150

但是数据只包含输出小时数的行,如何用输出 0 填充每个区域的缺失小时数?例如为 H1 添加两行:
area     date         hour      output
H1 2018-07-01 10:00:00 0
H1 2018-07-01 12:00:00 0

我可以假设所有区域的最小和最大小时是样本期的开始和结束(在本例中为 7:00:00 和 12:00:00)

现在,我正在创建一个数据框,其中包含每个区域从 7:00 到 12:00 的所有时间,然后将我的数据与该数据框合并,然后用 0 填充 NaN。这非常慢,因为我的数据集可能有数百万行。

有没有更好的方法来做到这一点?

最佳答案

您可以创建最小值和最大值的日期范围,并将数据框与现有的数据框合并,并使用 null 填充值

df

    area    date    hour    output
0 H1 2018-07-01 07:00:00 07:00:00 150
1 H1 2018-07-01 08:00:00 08:00:00 150
2 H1 2018-07-01 09:00:00 09:00:00 100
6 H2 2018-07-01 11:00:00 11:00:00 50
7 H2 2018-07-01 12:00:00 12:00:00 150

df = pd.DataFrame(pd.date_range(pd.to_datetime(df['date'] +' ' + df['hour']).min(),pd.to_datetime(df['date'] +' ' + df['hour']).max(),freq='H'),columns= ['date']).merge(df,on=['date'],how='outer').fillna(0)
df.hour = df.date.dt.strftime('%H:%M:%S')
df.date = df.date.dt.strftime('%d-%m-%Y')
df

出去:
date    area    hour    output
0 01-07-2018 H1 07:00:00 150.0
1 01-07-2018 H1 08:00:00 150.0
2 01-07-2018 H1 09:00:00 100.0
3 01-07-2018 0 10:00:00 0.0
4 01-07-2018 H2 11:00:00 50.0
5 01-07-2018 H2 12:00:00 150.0

关于python - 填写 Pandas 数据框中缺少的小时数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52409712/

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