如何将for循环的输出结果追加到单个pandas DataFrame中
原代码每次循环都会重新赋值覆盖df对象,未保留上一次循环的计算结果,因此会输出多个独立的小DataFrame。
以下是符合要求的实现方案:
方案1:循环中逐行拼接(完全符合逐次追加的逻辑)
import pandas as pd # 初始化空的目标DataFrame,提前定义列名 df = pd.DataFrame(columns=['filename', 'comments']) for i in range(1, 5): p = i + 4 # 生成当前循环的单行临时DataFrame temp_df = pd.DataFrame({'filename': [i], 'comments': [p]}) # 将临时数据拼接到总DataFrame中,忽略原有小表的索引 df = pd.concat([df, temp_df], ignore_index=True) # 将索引从1开始计数,匹配需要的输出格式 df.index = df.index + 1 print(df)
输出结果:
filename comments 1 1 5 2 2 6 3 3 7 4 4 8
方案2:循环收集数据最后统一转DataFrame(性能更优)
如果循环次数较多,频繁调用concat会降低运行效率,可以先在循环中把所有行数据存入列表,循环结束后一次性生成最终DataFrame,同样仅通过循环完成数据填充:
import pandas as pd # 初始化空列表存储每行数据 row_list = [] for i in range(1, 5): p = i + 4 row_list.append({'filename': i, 'comments': p}) # 循环结束后统一转换为DataFrame df = pd.DataFrame(row_list) # 调整索引起始值 df.index += 1 print(df)
输出结果和方案1完全一致。
内容的提问来源于stack exchange,提问作者new_learner
相关产品推荐
相关产品推荐

