如何将for循环转换pandas DataFrame列的结果生成新数据表
解决方法
你只需要把循环输出的结果赋值到新列即可,同时额外加一步格式转换,就能得到你要的HH:MM:SS格式,两种实现方式如下:
方式1:用apply批量处理(更简洁,不需要写循环)
import pandas as pd # 定义待处理的原始列、对应新列名 raw_cols = ["x_in_mins", "y_in_mins", "z_in_mins"] new_cols = ["x_in_hrs", "y_in_hrs", "z_in_hrs"] # 批量转换为目标格式并赋值 df[new_cols] = df[raw_cols].apply( lambda col: pd.to_timedelta(col, unit="min").astype(str).str.split().str[-1] ) # 提取所需列生成最终DataFrame res_df = df[["teams"] + new_cols]
方式2:沿用你原有for循环逻辑修改
raw_cols = ["x_in_mins", "y_in_mins", "z_in_mins"] # 先复制teams列为新DataFrame的基础 res_df = df[["teams"]].copy() for col in raw_cols: new_col = col.replace("_in_mins", "_in_hrs") # 转换后直接赋值到新DataFrame的对应列 res_df[new_col] = pd.to_timedelta(df[col], unit="min").astype(str).str.split().str[-1]
补充说明:pd.to_timedelta转换后默认是timedelta类型,转成字符串后如果时长超过1天会自带X days 前缀,用str.split().str[-1]可以统一截取最后一段HH:MM:SS格式的内容,和你需要的输出完全匹配。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

