如何使用Pandas对iPhone健康APP的步数DataFrame按日求和?
解决iPhone健康步数数据逐日求和的问题
嘿,这事儿不难,我给你一步步拆解:
第一步:确保日期列是datetime类型
首先得把startDate(或者endDate,看你习惯用哪个时间点,步数数据用开始时间就够)转换成Pandas能识别的datetime格式——毕竟iPhone导出的健康数据里的日期通常是字符串形式,比如2024-05-20 08:30:00这种,不转格式没法按日期分组。代码如下:
import pandas as pd # 假设你的DataFrame命名为df df['startDate'] = pd.to_datetime(df['startDate'])
第二步:提取纯日期部分(去掉时分秒)
接下来,我们需要从完整的datetime里剥离出仅日期的部分(比如把2024-05-20 08:30:00简化为2024-05-20),方便后续按天聚合:
# 新增一列存储纯日期,用dt.date得到日期对象,或者用dt.floor('D')保留datetime格式(后续操作更灵活) df['date'] = df['startDate'].dt.date # 可选:df['date'] = df['startDate'].dt.floor('D')
第三步:按日期分组求和
现在就可以按新的date列分组,对value列求和啦。如果unit列的单位都是统一的(比如步数都是count),也可以把它保留下来:
# 逐日汇总步数,同时保留单位(取每组第一个unit值,因为所有行的单位一致) daily_steps = df.groupby('date').agg( unit=('unit', 'first'), total_daily_steps=('value', 'sum') ).reset_index()
额外小提示
- 如果你说的“最后一列”是无关数据,可以先删掉避免干扰:
df = df.drop(columns=['多余列的名称']) - 要是遇到极少数跨天的记录(虽然iPhone步数一般不会有),可以根据实际需求选择用
startDate还是endDate的日期来分组
这样处理完,daily_steps就是你要的逐日步数汇总数据啦!
内容的提问来源于stack exchange,提问作者J.Doe
相关产品推荐
相关产品推荐

