如何基于首列行值对齐Pandas浮点数DataFrame并逐单元格相加?
解决方案
核心思路
利用Pandas的索引对齐机制,将timestamps列设为DataFrame的索引,这样不管行的位置如何,相同timestamp的行会自动匹配,再进行逐单元格运算。
具体步骤与代码
设置索引对齐行
先把两个DataFrame的timestamps列设为索引,确保后续运算时行能正确匹配:# 将timestamps设为索引,若需保留原列可添加drop=False df_1 = df_1.set_index('timestamps') df_2 = df_2.set_index('timestamps')循环累积相加
初始化累积DataFrame,在循环中每次对齐后累加新的DataFrame:# 初始化累积容器,以第一个df_1作为初始值 cumulative_df = df_1.copy() n = 1 # 初始计数器 # 模拟循环(替换为你的实际循环逻辑,比如批量读取文件/生成数据) for _ in range(your_loop_count): # 假设每次循环生成/读取新的df_new,先统一设置索引 df_new = df_new.set_index('timestamps') # 对齐后累加,缺失行默认填充NaN,用fill_value=0可将缺失值视为0计算 cumulative_df = cumulative_df.add(df_new, fill_value=0) n += 1 # 若你是固定重复将df_1与df_2相加n次,可简化为: # cumulative_df = df_1.add(df_2, fill_value=0) * n计算平均值
最后将累积结果除以循环次数n得到均值:result_df = cumulative_df / n # 可选:将索引转回普通列 result_df = result_df.reset_index()
关键说明
- 索引对齐后,位置不同但timestamp相同的行会自动匹配相加,比如示例中df_1的row_6和df_2的row_7(假设timestamp一致)会被正确对应。
- 若某个timestamp仅在单个DataFrame中存在,
add方法默认保留该行并填充NaN,根据业务需求选择是否用fill_value=0将缺失值转为0参与计算。
内容的提问来源于stack exchange,提问作者Ajgar Dev
相关产品推荐
相关产品推荐

