代码之家  ›  专栏  ›  技术社区  ›  Jabbar

如何根据另一列中满足的条件填充dataframe列

  •  1
  • Jabbar  · 技术社区  · 4 年前

    A2:介于(2,0)之间, A3:介于(0,-2)之间, 或A4:x<-2.

    imprt pandas as pd
    imort numpy as np
    df = pd.DataFrame({'A':[-4,-3.5,-2.5,-1,1,1.5,2,2.5,3.5]})
    

    我尝试了下面的代码,但不起作用。

    df['B'] = np.where((df['A']>2), 'A1',
                   np.where(df['A'].between(2,0),'A2',
                             np.where(df['A'].between(0,-2),'A3', 
                                       np.where(df['A']<-2), 'A4'))
    
    1 回复  |  直到 4 年前
        1
  •  0
  •   jezrael    4 年前

    如果更改,您的解决方案是可能的 () :

    df['B'] = np.where(df['A']>2,'A1',
              np.where(df['A'].between(0,2),'A2',
              np.where(df['A'].between(-2,0),'A3', 
              np.where(df['A']<-2, 'A4',''))))
    

    cut :

    df['B1'] = pd.cut(df['A'], bins=(-np.inf,-2,0,2,np.inf), labels=('A4','A3','A2','A1'))
    print (df)
         A   B  B1
    0 -4.0  A4  A4
    1 -3.5  A4  A4
    2 -2.5  A4  A4
    3 -1.0  A3  A3
    4  1.0  A2  A2
    5  1.5  A2  A2
    6  2.0  A2  A2
    7  2.5  A1  A1
    8  3.5  A1  A1