首页 文章

Pandas Dataframe nan值不会替换

提问于
浏览
1

试图替换我的数据框中列为'nan'的值(注意,而不是'NaN')

我在excel文件中读过,然后尝试替换这样的nan值:

All_items_df = ALL_df[df_items].fillna(' ')

最后我得到一个仍然包含'nan'的输出

All_items_df ['Colour'].head(10)
Out[]: 
7     nan
8     nan
9     nan
10    nan
13    nan
14    nan
15    nan
16    nan
18    nan
19    nan
Name: Colour, dtype: object

使用isna()或isnull()检查nan值.value.all()为上述值提供False . 为什么它不承认为nan / na值?

All_items_df ['Colour'].isnull().head(10)
Out[123]: 
7     False
8     False
9     False
10    False
13    False
14    False
15    False
16    False
18    False
19    False
Name: Minor Feats, dtype: bool

我正在写一个csv文件并将'nan'写入文件,即使指定不写出nan

All_items_df.to_csv(folderpath + "All_items.csv",encoding="UTF-8", index=False, na_rep='')

2 回答

  • 1

    您的 nan 似乎是字符串,实际上不是空值 . 在继续进行计划执行的任何计算之前,您可以使用此代码将 nan 替换为实际的空值:

    import numpy as np
    df.Colour.replace('nan', np.nan, inplace=True)
    

    Example

    >>> df
      Colour
    0    nan
    1    nan
    2    nan
    3   Blue
    4    nan
    
    df.Colour.replace('nan', np.nan, inplace=True)
    df.fillna('', inplace=True)
    
    >>> df
      Colour
    0       
    1       
    2       
    3   Blue
    4
    
  • 1

    确保将 nan 值读为 NaN . 您可以通过 pd.read_excel 中的参数执行此操作:

    df = pd.read_excel('file.xlsx', na_values=['nan'])
    

    奇怪的是,默认 nanpd.read_excel中不被视为 NaN 值:

    na_values:标量,str,类似列表或dict,默认无其他要识别为NA / NaN的字符串 . 如果dict通过,则具体的每列NA值 . 默认情况下,以下值被解释为NaN:'','#N / A','#N / AN / A','#N',' - 1 . #IND',' - . #QNAN', '-NaN',' - nan',

相关问题