【问题标题】:Pandas Dataframe nan values not replacingPandas Dataframe nan 值不替换
【发布时间】:2018-11-14 01:20:54
【问题描述】:

尝试替换我的数据框中列为“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().value.all() 检查 nan 值会给我上述值的 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='')

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

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

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

    示例

    >>> 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       
    

    【讨论】:

      【解决方案2】:

      确保您将nan 值读取为NaN。你可以通过pd.read_excel中的参数来做到这一点:

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

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

      na_values:标量、str、类列表或字典,默认无

      识别为 NA/NaN 的附加字符串。如果dict通过,具体 每列 NA 值。默认情况下,解释以下值 作为 NaN:''、'#N/A'、'#N/A N/A'、'#NA'、'-1.#IND'、'-1.#QNAN'、'-NaN'、 ‘-nan’,

      【讨论】:

      • 我会试试这个,但我的文件实际上并不包含“nan”。对于颜色值,条目是空的,所以 pandas 准备好为空并转换为 nan,但随后不识别为空值?!?
      猜你喜欢
      • 2017-07-04
      • 2016-01-08
      • 2013-09-12
      • 1970-01-01
      • 1970-01-01
      • 2012-11-23
      • 2019-08-15
      相关资源
      最近更新 更多