![](/img/trans.png)
[英]How to populate a column in a dataframe based on data in another column and condition /switch on another column in python
[英]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.