以下是一个示例代码,可以将数据按小时进行分组,并在每个小时的分组中检查是否有数据。如果没有数据,则将其值设置为0。
import pandas as pd
# 创建示例数据
data = {'datetime': ['2022-01-01 09:00:00', '2022-01-01 09:30:00', '2022-01-01 10:30:00']}
df = pd.DataFrame(data)
# 将datetime列转换为日期时间类型
df['datetime'] = pd.to_datetime(df['datetime'])
# 设置datetime列为索引
df.set_index('datetime', inplace=True)
# 按小时进行分组,并统计每个小时的数据数量
hourly_counts = df.resample('H').size()
# 检查是否有数据,并将没有数据的小时设置为0
hourly_counts = hourly_counts.reindex(pd.date_range(start=df.index.min(), end=df.index.max(), freq='H'), fill_value=0)
print(hourly_counts)
输出结果如下所示:
2022-01-01 09:00:00 2
2022-01-01 10:00:00 1
Freq: H, dtype: int64
在示例中,我们首先将datetime列转换为日期时间类型,并将其设置为DataFrame的索引。然后,我们使用resample()
函数按小时对数据进行分组,并使用size()
函数统计每个小时的数据数量。最后,我们使用reindex()
函数将结果重新索引为包含所有小时的日期范围,并将没有数据的小时设置为0。