繁体   English   中英

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

[英]How to populate a dataframe column based on condition met in another column

我想知道如何为以下 dataframe 创建一个新列(例如 B),并为每一行定义其值是否为 A1:x>2,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'))

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM