Pandas向已有DataFrame逐列赋值添加行未生效问题咨询
问题原因与修复方案
核心错误点
- 读取的初始DataFrame为空(行数为0),直接对
df[列名]赋值标量只会修改已存在的行,空DataFrame没有可修改的行,赋值操作不会自动新增行,执行完循环后DataFrame还是空的。 - 整个逻辑执行完没有调用
to_csv方法将修改后的DataFrame写回test.csv文件,原文件自然不会有变化。 - 使用
list作为变量名会覆盖Python内置的list类型,属于不规范的变量命名,可能引发后续异常。
修复后的代码
import pandas as pd col_list = ['col1', 'col2', 'col3'] turn = 2 df = pd.read_csv('test.csv', sep='|') while turn: # 先新增空行,再逐列赋值 df.loc[len(df)] = None for each in col_list: df.loc[len(df)-1, each] = turn turn -= 1 # 将修改后的内容写回CSV文件 df.to_csv('test.csv', sep='|', index=False)
如果你不需要强制逐列赋值,也可以简化新增行的逻辑:
while turn: df.loc[len(df)] = [turn] * len(col_list) turn -= 1
执行后test.csv的内容就会符合你的预期。
内容的提问来源于stack exchange,提问作者Shubhanshu Singh
相关产品推荐
相关产品推荐

