Filling a DataFrame with “sign” numbers

后端 未结 3 1767
小蘑菇
小蘑菇 2021-02-14 13:13

I have a DataFrame full of floats (positive and negative) and some NaN. I\'d like to replace every single float number with its sign:

if it\'s NaN -> it remai         


        
3条回答
  •  梦如初夏
    2021-02-14 13:22

    You can use boolean indexing:

    import pandas as pd
    import numpy as np
    
    df = pd.DataFrame({'A':[-1,3,0,5],
                       'B':[4,5,6,5],
                       'C':[8,-9,np.nan,7]})
    
    print (df)
       A  B    C
    0 -1  4  8.0
    1  3  5 -9.0
    2  0  6  NaN
    3  5  5  7.0
    
    print (df > 0)
           A     B      C
    0  False  True   True
    1   True  True  False
    2  False  True  False
    3   True  True   True
    
    print (df < 0)
           A      B      C
    0   True  False  False
    1  False  False   True
    2  False  False  False
    3  False  False  False
    
    df[df > 0] = 1
    df[df < 0] = -1
    
    print (df)
       A  B    C
    0 -1  1  1.0
    1  1  1 -1.0
    2  0  1  NaN
    3  1  1  1.0
    

提交回复
热议问题