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

5 人关注

在我的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 "这样的参数用于导出?我无法在.to_csv的api文档.

3 个评论
你能不能不先写描述,然后再追加到文件中?或者直接写两行然后再追加?在 pandas 中没有一个内置的api来实现这一点。
也许你是对的。我看到你在写csv时可以使用 mode='a' 进行追加。所以我只需要在导出前创建一个有两个空行的csv文件。
附加到一个预先存在的文件是微不足道的,没有一个内置的方法 pandas 来使用 to_csv 做到这一点。
python
pandas
csv
export-to-csv
Marco
Marco
发布于 2018-07-24
2 个回答
jezrael
jezrael
发布于 2020-05-15
已采纳
0 人赞同

一个可能的解决方案是,先写上 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')
    
很好,第一个方案对我有用。如果我以后真的需要描述,我会改用第二个方案。谢谢!
感谢@jezrael的回答,只是想知道我们是否有办法在.to_csv()中单独 skip first row
rigo
rigo
发布于 2020-05-15
0 人赞同

你想从你的原文件中复制头,然后写到你的新文件中。然后你通过设置模式为'a'来追加你的数据框架

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