You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas的concat替代append实现两DataFrame写入同CSV且中间有空行

问题场景

现有两个DataFrame:

# df1
        State  Score
0  Arizona AZ     62
1  Georgia GG     47
2  Newyork NY     55
3  Indiana IN     74
4  Florida FL     31

# df3
  letter  number animal
0      c       3    cat
1      d       4    dog

需要生成中间带空行的CSV文件,格式如下:

State  Score
Arizona AZ     62
Georgia GG     47
Newyork NY     55
Indiana IN     74
Florida FL     31

letter  number animal
      c       3    cat
      d       4    dog

原使用append方法添加空Series实现需求,但收到append即将弃用的警告;改用concat后无法生成两组数据间的空行,需解决该问题。

解决方案

方法1:用concat合并空行DataFrame

空Series无法被concat识别为有效行,需创建与df1列数匹配的空行DataFrame:

import pandas as pd

# 生成一行全为NA的空行,列名与df1一致
empty_row = pd.DataFrame([[pd.NA]*len(df1.columns)], columns=df1.columns)
# 合并df1与空行
df1_with_empty = pd.concat([df1, empty_row], ignore_index=True)
# 写入CSV,将NA转为空字符串
df1_with_empty.to_csv('foo.csv', index=False, na_rep='')
# 追加写入df3
df3.to_csv('foo.csv', mode='a', index=False)

方法2:直接操作CSV文件追加空行

无需修改DataFrame,写完df1后手动写入空行再追加df3:

# 写入df1到CSV
df1.to_csv('foo.csv', index=False)
# 打开文件追加空行
with open('foo.csv', 'a') as f:
    f.write('\n')
# 追加写入df3
df3.to_csv('foo.csv', mode='a', index=False)
原因说明

pd.concat([df1, empty_df])中,空Series没有有效行数据,不会被添加到合并后的DataFrame中;而空行DataFrame包含一行NA值,配合na_rep=''参数写入CSV时会转换为空行,从而实现需求。

内容的提问来源于stack exchange,提问作者Giulia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 15:20:42