How to replace NaN values by Zeroes in a column of a Pandas Dataframe?

后端 未结 13 1385
无人共我
无人共我 2020-11-22 01:37

I have a Pandas Dataframe as below:

      itm Date                  Amount 
67    420 2012-09-30 00:00:00   65211
68    421 2012-09-09 00:00:00   29424
69             


        
相关标签:
13条回答
  • 2020-11-22 01:58

    It is not guaranteed that the slicing returns a view or a copy. You can do

    df['column'] = df['column'].fillna(value)
    
    0 讨论(0)
  • 2020-11-22 01:58

    Considering the particular column Amount in the above table is of integer type. The following would be a solution :

    df['Amount'] = df.Amount.fillna(0).astype(int)
    

    Similarly, you can fill it with various data types like float, str and so on.

    In particular, I would consider datatype to compare various values of the same column.

    0 讨论(0)
  • 2020-11-22 02:04

    I believe DataFrame.fillna() will do this for you.

    Link to Docs for a dataframe and for a Series.

    Example:

    In [7]: df
    Out[7]: 
              0         1
    0       NaN       NaN
    1 -0.494375  0.570994
    2       NaN       NaN
    3  1.876360 -0.229738
    4       NaN       NaN
    
    In [8]: df.fillna(0)
    Out[8]: 
              0         1
    0  0.000000  0.000000
    1 -0.494375  0.570994
    2  0.000000  0.000000
    3  1.876360 -0.229738
    4  0.000000  0.000000
    

    To fill the NaNs in only one column, select just that column. in this case I'm using inplace=True to actually change the contents of df.

    In [12]: df[1].fillna(0, inplace=True)
    Out[12]: 
    0    0.000000
    1    0.570994
    2    0.000000
    3   -0.229738
    4    0.000000
    Name: 1
    
    In [13]: df
    Out[13]: 
              0         1
    0       NaN  0.000000
    1 -0.494375  0.570994
    2       NaN  0.000000
    3  1.876360 -0.229738
    4       NaN  0.000000
    

    EDIT:

    To avoid a SettingWithCopyWarning, use the built in column-specific functionality:

    df.fillna({1:0}, inplace=True)
    
    0 讨论(0)
  • 2020-11-22 02:04

    Easy way to fill the missing values:-

    filling string columns: when string columns have missing values and NaN values.

    df['string column name'].fillna(df['string column name'].mode().values[0], inplace = True)
    

    filling numeric columns: when the numeric columns have missing values and NaN values.

    df['numeric column name'].fillna(df['numeric column name'].mean(), inplace = True)
    

    filling NaN with zero:

    df['column name'].fillna(0, inplace = True)
    
    0 讨论(0)
  • 2020-11-22 02:05

    You can also use dictionaries to fill NaN values of the specific columns in the DataFrame rather to fill all the DF with some oneValue.

    import pandas as pd
    
    df = pd.read_excel('example.xlsx')
    df.fillna( {
            'column1': 'Write your values here',
            'column2': 'Write your values here',
            'column3': 'Write your values here',
            'column4': 'Write your values here',
            .
            .
            .
            'column-n': 'Write your values here'} , inplace=True)
    
    0 讨论(0)
  • 2020-11-22 02:06

    To replace na values in pandas

    df['column_name'].fillna(value_to_be_replaced,inplace=True)
    

    if inplace = False, instead of updating the df (dataframe) it will return the modified values.

    0 讨论(0)
提交回复
热议问题