如何基于前一行计算数据,为Pandas DataFrame添加5行新数据?
高效生成并追加Pandas DataFrame行的实现方式
想要高效实现需求,核心是避免逐行追加DataFrame(因为Pandas的DataFrame是不可变结构,每次追加都会复制整个数据集,效率极低),改用「先循环生成所有新数据的列表,再一次性合并」的方式,具体步骤如下:
步骤1:提取原DataFrame的起始基准值
先获取原DataFrame最后一行的关键值,作为新行的起始基准:
import pandas as pd # 假设你的原DataFrame名为df last_row = df.iloc[-1] # 新行的起始索引、period、value2 start_idx = last_row.name + 1 start_period = last_row['period'] + 1 start_value2 = last_row['value2'] + 1
步骤2:循环生成新数据列表
用for循环批量生成5行数据的字典列表,这一步的开销远低于逐行操作DataFrame:
new_rows = [] for i in range(5): new_rows.append({ 'period': start_period + i, 'value2': start_value2 + i, 'fieldName': 'eps' })
步骤3:合并新数据到原DataFrame
将生成的列表转为DataFrame,设置连续索引后,一次性合并到原DataFrame:
# 创建新DataFrame并指定索引 new_df = pd.DataFrame(new_rows, index=range(start_idx, start_idx + 5)) # 合并两个DataFrame df = pd.concat([df, new_df], axis=0)
这种方式既满足了循环生成的需求,又保证了效率,避免了逐行追加带来的性能损耗。
内容的提问来源于stack exchange,提问作者Colton C
相关产品推荐
相关产品推荐

