首页 > 解决方案 > pd.fillna 替换值未出现在 csv 文件中的正确位置

问题描述

我对 python 非常陌生,并尝试使用 pd.fillna 在带有空格的非常大的 csv 文件中填充 NaN 值,但空格都出现在每行的末尾,并带有 NaN 值。代码如下所示。

reader = pd.read_csv(path, sep='\s+', skipinitialspace=True, dtype=str, engine='python', names=headers)
spacedReader = reader.fillna(value=' ', axis=1)
spacedReader.to_csv(path, sep=',', quoting=csv.QUOTE_NONE, escapechar=' ', header=headers)
001  alb  272  nc      
002  NaN  NaN  nc
NaN  alb  768  nc

会产生...

001,alb,272,nc
002,nc, , 
alb,768,nc, 

而我需要...

001,alb,272,nc
002, , , nc
 ,alb,768,nc

我将不胜感激任何帮助!

标签: pythonpandascsvfillna

解决方案


你可以试试这样的

import numpy as np
import pandas as pd

df = pd.DataFrame([[np.nan, 2, np.nan, 0],
                   [3, 4, np.nan, 1],
                   [np.nan, np.nan, np.nan, 5],
                   [np.nan, 3, np.nan, 4]],
                  columns=list('ABCD'))


df1 = df.replace(np.nan, '', regex=True)

df1.head()

输出

    A   B   C   D
0       2       0
1   3   4       1
2               5
3       3       4

推荐阅读