Python新手求助:循环生成DataFrame遇格式与冗余变量问题
解决DataFrame生成中的冗余换行与格式混乱问题
Hey Rodrigo,我来帮你一步步梳理问题、解决它!
先看你当前的代码,有几个核心问题导致了冗余换行和格式混乱:
- 用
print()写入文件时,默认会在内容末尾自动添加换行符\n,而且print()本身返回的是None,所以nuevo变量其实没有实际作用; - 直接把文件对象传给
pd.DataFrame.from_records()是错误的,需要先读取并处理文件内容的格式; - 列名设置成
[['A','B','C']]会创建多级列索引,这大概率不是你想要的效果。
第一步:正确生成并写入规整数据
先修改写入文件的逻辑,避免冗余换行,同时确保数据格式统一:
# 用with语句自动管理文件开闭,更安全省心 with open("loop3.txt", "w") as f: for n in range(35, 40): # 假设你想每行写入3个连续数字,可根据实际需求调整内容 line = f"{n} {n+1} {n+2}\n" f.write(line)
这样写入的每行都是用空格分隔的数字,换行符仅在每行末尾添加一次,不会产生冗余。
第二步:读取并清洗文件内容
读取文件后,需要拆分每行内容、去掉换行符,再转换成数值类型:
import pandas as pd # 读取文件并处理成规整的列表格式 data = [] with open("loop3.txt", "r") as f: for line in f: # 去掉换行符→按空格拆分→转成整数 row = list(map(int, line.strip().split())) data.append(row)
第三步:生成格式正确的DataFrame
用处理好的data生成DataFrame,设置普通列名即可:
df = pd.DataFrame(data, columns=['A', 'B', 'C']) print(df)
更高效的简化方案(跳过文件写入)
如果不需要保留中间文件,其实可以直接生成DataFrame,省去读写文件的步骤:
import pandas as pd # 直接生成数据列表 data = [] for n in range(35, 40): data.append([n, n+1, n+2]) # 可根据你的实际需求调整每行内容 df = pd.DataFrame(data, columns=['A', 'B', 'C']) print(df)
运行后你会得到一个格式规整、无冗余换行的DataFrame:
A B C 0 35 36 37 1 36 37 38 2 37 38 39 3 38 39 40 4 39 40 41
如果你的原始数据格式和我假设的不一样(比如每行数字数量不同),可以告诉我具体需求,我再帮你调整!
内容的提问来源于stack exchange,提问作者Rodrigo B
相关产品推荐
相关产品推荐

