如果值大于2python,那么在列值中添加1的好方法是什么



如果列值大于2 ,我想在列值中添加1

here is my dataframe
df=pd.DataFrame({'A':[1,1,1,1,1,1,3,2,2,2,2,2,2],'flag':[1,1,0,1,1,1,5,1,1,0,1,1,1]}) 

df_out

df=pd.DataFrame({'A':[1,1,1,1,1,1,3,2,2,2,2,2,2],'flag':[1,1,0,1,1,1,6,1,1,0,1,1,1]})

使用DataFrame.loc并添加1:

df.loc[df.A.gt(2), 'flag'] += 1
print (df)
A  flag
0   1     1
1   1     1
2   1     0
3   1     1
4   1     1
5   1     1
6   3     6
7   2     1
8   2     1
9   2     0
10  2     1
11  2     1
12  2     1

或者:

df['flag'] = np.where(df.A.gt(2), df['flag'] + 1, df['flag'])

编辑:

mean = df.groupby(pd.cut(df['x'], bins))['y'].transform('mean')
df['flag'] = np.where(mean.gt(2), df['y'] + 1, df['y'])

然后:

x= df.groupby(pd.cut(df['x'], bins))['y'].apply(lambda x:abs(x-np.mean(x)))

最新更新