如何将Pandas DataFrame列末尾x行求和结果更新至空DataFrame
问题原因
你初始化的df_new_final_tail是没有任何行的空DataFrame,直接对整列赋值标量sum_x时,Pandas没有匹配的行索引可以写入值,因此赋值操作不会实际生效,最终DataFrame依然为空。
解决方法
方法1:推荐写法(无需循环,代码更简洁高效)
直接对df_new_final的末尾15行求和,再处理列名匹配后直接生成目标DataFrame即可:
import pandas as pd # 1. 先取末尾15行,直接对所有需要的列求和 tail_15_sum = df_new_final[[col + '_buy' for col in df_series.columns]].tail(15).sum() # 2. 重置列名为你需要的名称,转成DataFrame后转置,行索引可自定义 df_new_final_tail = tail_15_sum.rename(lambda x: x.replace('_buy', '')).to_frame().T
方法2:修改原有循环的写法
如果要保留你原来的循环逻辑,可以先把所有求和结果存入字典,再一次性生成DataFrame:
df_series_list = df_series.columns.values.tolist() sum_dict = {} for items in df_series_list: sum_dict[items] = df_new_final.tail(15)[items+'_buy'].sum() # 把字典转为DataFrame,单个字典会生成1行数据的df df_new_final_tail = pd.DataFrame([sum_dict])
内容的提问来源于stack exchange,提问作者user51988
相关产品推荐
相关产品推荐

