首页 > 解决方案 > 从 pandas python 写入 csv 时,有没有办法删除空单元格(空单元格的逗号)?

问题描述

例如我有一个这样的df

一个 C D F
1 2 3 4
1 2
1 5 9 5 3 1
5

当我将其转换为 csv 时,我得到一个 csv,其中包含“,”用于空白单元格。IE

1,2,3,4,,,
1,2,,,,,
1,5,9,5,3,1
5,,,,,,

有没有办法让我得到填充的单元格并删除带有空单元格的逗号?预期输出为:

1,2,3,4
1,2
1,5,9,5,3,1
5

这是一个包含数百万行和数千列的大型数据集。因此试图看看我是否可以删除不必要的空格。

标签: pythonpython-3.xpandascsv

解决方案


  • to_csv()定义为确保考虑每一列,因此将分隔空列
  • 输出to_csv()到缓冲区然后strip(",")删除尾随逗号
  • 将其输出到文件
import pandas as pd
import io
import numpy as np
from pathlib import Path

df = pd.DataFrame(
    {
        "A": [1, 1, 1, 5],
        "B": [2.0, 2.0, 5.0, np.nan],
        "C": [3.0, np.nan, 9.0, np.nan],
        "D": [4.0, np.nan, 5.0, np.nan],
        "E": [np.nan, np.nan, 3.0, np.nan],
        "F": [np.nan, np.nan, 1.0, np.nan],
    }
)


with open(Path.cwd().joinpath("special.csv"), "w") as f:
    f.write("\n".join([l.strip(",") for l in df.to_csv(index=False, header=None).split("\n")]))

推荐阅读