所以我知道这在面子上看起来微不足道,但我试图做的事实上是不同的。
我有一个数据框:
map.put("input1", data1.getText().toString());
map.put("input2", data2.getText().toString());
map.put("input3", data3.getText().toString());
我想对它进行操作,例如:
pip install pyzmail36
但我也有最大值,实际上是x
1
3
4
。
这将实现输出:
df['x']=df['x']+1
因此,在无效语法中,我想我想要做的是:min(4,val)
但这不起作用。
除了做:
x
2
4
4
有没有人有更优雅的解决方案?
由于
答案 0 :(得分:3)
您可以使用剪辑:
(df['x'] + 1).clip(upper=4)
0 2
1 4
2 4
Name: x, dtype: int64
以下内容也适用:
np.minimum(df['x'] + 1, 4)
0 2
1 4
2 4
Name: x, dtype: int64
你做了什么没有用,因为np.min需要一个数组。然而,np.minimum比较两个值(或数组),以便它可以广播。
答案 1 :(得分:2)
使用numpy.where
:
df['x'] = np.where(df['x'] > 3, 4, df['x'] + 1)
#same as
#df['x'] = np.where(df['x'] > 4 - 1, 4, df['x'] + 1)
print (df)
x
0 2
1 4
2 4
df['x'] = (df['x'] + 1).clip_upper(4)
print (df)
x
0 2
1 4
2 4
使用add
时可能更好:
df['x'] = df['x'].add(1).clip_upper(4)
print (df)
x
0 2
1 4
2 4
编辑:
条件需要loc
新值:
df['x']=df['x'] + 1
df.loc[df['x'] > 4, 'x'] = 4
print (df)
x
0 2
1 4
2 4