Python/Pandas - 将空单元格写入 csv 文件(而不是零)

标签 python python-3.x pandas csv

在 Windows 10 上运行 Python 3.8.1(64 位)。

我有一个包含两列的 csv 文件。第一列每行都没有数值(=具有值的单元格之间的空单元格),第二列每行都有数值。

column_1 column_2
         200
13       201
         202
         203
         204
         205
129      206
16       207
         208

我用 Pandas 读取了 csv 文件(如上所示):

df = pd.read_csv("old.csv")

我对 Pandas 数据框进行了修改,并使用没有索引列的 Pandas 写入新的 csv 文件。

df.to_csv("new.csv", sep=',', encoding='utf-8', index=False)

结果是一个 csv 文件,其中原始空单元格用零代替。

column_1,column_2
0,200
13,201
0,202
0,203
0,204
0,205
129,206
16,207
0,208

我的问题:如何修改我的脚本以在 csv 文件中写入空单元格而不是零 (0)(即,column_2 值为 200、202、203、204、205 和 208 的行)?

最佳答案

您可以通过Series.mask0设置为缺失值,对于整数,将输出转换为Int64 ,在 pandas 0.24+ 中工作:

df = pd.DataFrame({'column_1': [0, 13, 0, 0, 0, 0, 129, 16, 0],
                   'column_2': [200, 201, 202, 203, 204, 205, 206, 207, 208]})
print (df)
   column_1  column_2
0         0       200
1        13       201
2         0       202
3         0       203
4         0       204
5         0       205
6       129       206
7        16       207
8         0       208

df['column_1'] = df['column_1'].mask(df['column_1'].eq(0)).astype('Int64')
print (df)
   column_1  column_2
0       NaN       200
1        13       201
2       NaN       202
3       NaN       203
4       NaN       204
5       NaN       205
6       129       206
7        16       207
8       NaN       208

df.to_csv("new.csv", sep=',', encoding='utf-8', index=False)

column_1,column_2
,200
13,201
,202
,203
,204
,205
129,206
16,207
,208

另一个想法是替换空字符串:

df['column_1'] = df['column_1'].mask(df['column_1'].eq(0), '')
print (df)
  column_1  column_2
0                200
1       13       201
2                202
3                203
4                204
5                205
6      129       206
7       16       207
8                208

df.to_csv("new.csv", sep=',', encoding='utf-8', index=False)

column_1,column_2
,200
13,201
,202
,203
,204
,205
129,206
16,207
,208

关于Python/Pandas - 将空单元格写入 csv 文件(而不是零),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60318501/

相关文章:

python - 当同一个 POST 在 Postman 中正常工作时,如何解决 Python 请求 POST 失败的问题?

python - 获取Python模块属性的名称和类型

python - 使用 Pandas 进行条件切片(优雅的方式)

python - 使用 .loc 的 Series 之间的值分配,具有不同索引的相同大小

python - 主键字段上的 serialize=False 是什么意思?

python - 根据 Pandas 中的另一列连接一组列值

python - 打包 Docopt CLI 应用程序

python sqlite3操作错误: attempt to write a readonly database

python - 如何将数组转换为数据框?

Python dataframe 获取一个值的行和列