我有一个非常简单的任务要完成:
**1)**读取一个输入csv文件(具有不同长度的头部分),**2)**对其进行一些基本转换(作为 Dataframe ),**3)**将其作为新的csv(包括与输入csv相同的头部分)。
下面的代码运行良好,除了一个令人讨厌的事情:在写入新CSV时忽略列名。
import pandas as pd
with open('input_file.csv', 'r') as f1, open('output_file.csv', 'w') as f2:
extra = False
for line in f1:
if ',' not in line:
extra = True
f2.write(line)
elif extra:
break
df = pd.read_csv(f1)
# some basic processing here to df like below
df.iat[0, 1] = 0
df.to_csv(f2, index=False)
我实际的新csv看起来像下面这样(看看行col1,col2,col3
是如何丢失的):
Title=foo
Date=16/08/2023
Category=bar
...
id1,0,2
id2,3,4
id3,5,6
你能解释一下为什么吗?我觉得这与我的循环有关(因此,我的问题的标题)。
这是我的输入csv btw:
Title=foo
Date=16/08/2023
Category=bar
...
col1,col2,col3
id1,1,2
id2,3,4
id3,5,6
2条答案
按热度按时间3b6akqbq1#
只需重新排列/减少关键的循环来捕获包含列名的行:
mwkjh3gx2#
为什么不重用
line
?或者,移回该行之前的位置:
输出
df
: