Replace numeric values in a pandas dataframe

后端 未结 2 801
生来不讨喜
生来不讨喜 2021-01-17 01:16

Problem: Polluted Dataframe.
Details: Frame consists of NaNs string values which i know the meaning of and numeric values.
Task

相关标签:
2条回答
  • 2021-01-17 01:45

    You can do a round-conversion to str to replace the values and back.

    df.astype('str').replace({'\d+': np.nan, 'nan': np.nan}, regex=True).astype('object')
    #This makes sure already existing np.nan are not lost
    

    Output

        0   1   2
    0   abc cdf NaN
    1   k   sum some
    2   NaN NaN nothing
    
    0 讨论(0)
  • 2021-01-17 01:52

    You can use a loop to go through each columns, and check each item. If it is an integer or float then replace it with np.nan. It can be done easily with map function applied on the column.

    you can change the condition of the if to incorporate any data type u want.

    for x in df.columns:
        df[x] = df[x].map(lambda item : np.nan if type(item) == int or type(item) == float else item)
    

    This is a naive approach and there have to be better solutions than this.!!

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