使用pandas为心率时序数据创建仅含分/秒/分秒的自定义时间索引
实现方法
你需要对生成的时间序列做自定义字符串格式化,不要直接使用datetime.time对象的默认输出格式,参考实现代码如下:
import pandas as pd # 1. 先生成基础时间序列 raw_time = pd.date_range("2000-01-01", periods=1800, freq='0.5S') # 2. 定义自定义格式化函数 def format_hr_index(t): mins = t.minute total_sec = t.second + t.microsecond / 1000000 # 按需求处理秒的显示 if total_sec.is_integer(): return f"{mins:02d}:{int(total_sec):02d}" return f"{mins:02d}:{total_sec:.1f}" # 3. 生成自定义索引 custom_index = [format_hr_index(t) for t in raw_time] # 4. 赋值给你的DataFrame,假设你的原始心率数据存在hr_data变量中 df = pd.DataFrame({"Heart Rate": hr_data}, index=custom_index)
补充说明
- 如果你后续需要基于时间做筛选、运算等操作,建议先保留
raw_time作为正式索引,仅在需要打印输出的时候替换为格式化后的字符串索引,避免丢失时间类型的运算能力。 - 如果你只需要显示时调整格式,不需要修改实际索引,可以使用pandas的样式功能实现:
# 仅修改显示格式,不改变原索引类型 df.style.format_index(lambda t: format_hr_index(t))
内容的提问来源于stack exchange,提问作者Mark Fisher
相关产品推荐
相关产品推荐

