Pandas: Replacing Non-numeric cells with 0

后端 未结 3 732
囚心锁ツ
囚心锁ツ 2020-12-18 08:12

I have the Pandas Dataframe in this format

0          or LIST requests
1                 us-west-2
2                 1.125e-05
3                         0
4          


        
相关标签:
3条回答
  • 2020-12-18 08:48

    You can use the to_numeric method, but it's not changing the value in place. You need to set the column to the new values:

    training_data['usagequantity'] = (
        pd.to_numeric(training_data['usagequantity'],
                      errors='coerce')
          .fillna(0)
        )
    

    to_numeric sets the non-numeric values to NaNs, and then the chained fillna method replaces the NaNs with zeros.

    0 讨论(0)
  • 2020-12-18 08:51

    Following code can work:

    df.col =pd.to_numeric(df.col, errors ='coerce').fillna(0).astype('int')
    
    0 讨论(0)
  • 2020-12-18 08:55

    Setup

    import pandas as pd
    from StringIO import StringIO
    
    text = """0          or LIST requests
    1                 us-west-2
    2                 1.125e-05
    3                         0
    4                 3.032e-05
    5                         0
    6                  7.28e-06
    7          or LIST requests
    8                   3.1e-07
    9                         0
    10                        0
    11                1.067e-05
    12               0.00011983
    13                0.1075269
    14         or LIST requests
    15                us-west-2
    16                        0
    17                 2.88e-06
    18           ap-northeast-2
    19                 5.52e-06
    20                 6.15e-06
    21                 3.84e-06
    22         or LIST requests"""
    
    df = pd.read_csv(StringIO(text), sep='\s{2,}', engine='python', index_col=[0], header=None)
    

    Use pd.to_numeric

    pd.to_numeric(df.iloc[:, 0], errors='coerce').fillna(0)
    

    Assign this column where ever you'd like.

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