编写csv时跳过第一行(pandas.DataFrame.to_csv)

时间:2018-07-24 13:31:13

标签: python pandas csv export-to-csv

在我的python脚本中,我正在通过读取csv文件

df = pd.read_csv('input.csv', sep=';', encoding = "ISO-8859-1", skiprows=2, skipfooter=1, engine='python')

我正在跳过csv文件中的前两行,因为它们只是我不需要的说明。

导入后,我正在过滤和分离数据。 我想将数据写回csv文件,同时保持与以前相同的格式(前两行为空或说明与导入之前相同)。我该怎么办?

当前我正在使用

df.to_csv('output.csv'), sep=';', encoding = "ISO-8859-1")

是否存在用于导出的参数“ skiprows”?我在api documentation for .to_csv中找不到一个。

2 个答案:

答案 0 :(得分:2)

一种可能的解决方案是先用NaN编写DataFrame,然后附加原始的DataFrame

df1 = pd.DataFrame({'a':[np.nan] * 2})
df1.to_csv('output.csv', index=False, header=None)
df.to_csv('output.csv', sep=';', encoding = "ISO-8859-1", mode='a')

或与df1相同的原始标头,然后首先写入,只需要在标头数据中没有值|

df1 = pd.read_csv('input.csv', sep='|', encoding = "ISO-8859-1", nrows=2, names=['tmp'])

df1.to_csv('output.csv', index=False, header=None)
df.to_csv('output.csv', sep=';', encoding = "ISO-8859-1", mode='a')

答案 1 :(得分:0)

您要复制原始文件的标头并写入新文件。然后通过将模式设置为'a'来附加数据框

with open("my_csv.csv") as f:
    header =''
    for line in range(0,header_length_in_lines):
        header +=f.readline()

with open('my_new_csv.csv','w+') as f:
    f.write(header)
df.to_csv('my_new_csv.csv', mode='a', index=False)