You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas GroupBy操作后如何获取作为分组依据的时间戳值?

解决方案

你之前的代码出错是因为df.groupby(df['Timestamp'].dt.floor('h'))['Timestamp']拿到的是分组后的GroupBy对象而非分组键,赋值后会把每个组内所有原始时间记录都存入列,才会出现非整点的结果。你可以用两种方法快速拿到想要的整点时间列:

方法1:直接重置现有DataFrame的索引

你当前生成的machineAndRevenuePerHourDF的行索引就是你需要的整点时间戳,只需加一行重置索引的代码即可:

# 现有生成machineAndRevenuePerHourDF的代码不变,新增下面这行
machineAndRevenuePerHourDF = machineAndRevenuePerHourDF.reset_index()

重置索引后,原索引Timestamp会自动转为普通列,值就是你要的整点时间。

方法2:优化聚合逻辑,一次性生成目标DataFrame

不需要拆分三次groupby操作,一次性聚合更高效,代码更简洁:

df = wr.s3.read_csv(path=[f's3://{csvList[i].bucket_name}/{csvList[i].key}'])
df['Timestamp'] = pd.to_datetime(df['Timestamp'])
# 先生成整点时间分组列
df['hourly_time'] = df['Timestamp'].dt.floor('h')
# 按整点时间分组,同时统计两个指标,as_index=False会自动把分组键转为普通列
machineAndRevenuePerHourDF = df.groupby('hourly_time', as_index=False).agg(
    Machines_Used_per_Hour = ('Machine Name', 'count'),
    Revenue_per_Hour = ('Total Revenue', 'sum')
)
# 按需修改列名即可
machineAndRevenuePerHourDF.rename(columns={'hourly_time':'Timestamp'}, inplace=True)

内容的提问来源于stack exchange,提问作者Kozer H

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 03:54:03