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

标签 python pandas

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

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/

相关文章:

python - 是否可以在事件循环已在运行时运行 asyncio.Server 实例

python - Codecademy 熟能生巧 10/15(文字审查)

python - 如何通过Python对目录中的多个值进行排序

python - 以 URI 文件形式访问注册数据集时出现 HTTP 错误 409 (Azure SDKv2)

python - 数据框中多列的计算

python - 如何重置 TraitsUI python 应用程序?

python - 遍历一组列表,一次一个列表

python - 如何更改 Pandas Dataframe 的形状(行号为 "L")?

python - 如何用 Pandas 数据绘制饼图

python - 目前 pandas merge 有什么问题吗?