【问题标题】:How to populate a dataframe column based on condition met in another column如何根据另一列中满足的条件填充数据框列
【发布时间】:2021-12-30 08:09:28
【问题描述】:

我想知道如何为以下数据框创建一个新列(例如 B),并为每一行定义其值是否为 A1:x>2, A2:在(2,0)之间, A3:在(0,-2)之间, 或 A4:x

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'))

【问题讨论】:

  • 一个想要的结果表会很好,因为你想要的格式有点模棱两可

标签: python pandas dataframe numpy


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-29
    • 2021-07-25
    • 2021-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多