熊猫对数据帧的数值处理(即max())

时间:2017-05-02 08:58:00

标签: python pandas

所以我知道这在面子上看起来微不足道,但我试图做的事实上是不同的。

我有一个数据框:

    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

有没有人有更优雅的解决方案?

由于

2 个答案:

答案 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

clip_upper

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