数据帧上的Pandas数字操作(即max())

2024-05-20 18:44:29 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我知道从表面上看这看起来很微不足道,但实际上我想做的是不同的

我有一个数据帧:

x
1
3
4

我想对它做一个操作,比如:

df['x']=df['x']+1

但我还有一个最大值,实际上是min(4,val)

这将实现输出:

x
2
4
4

所以,在invalidate语法中,我想我要做的是:df['x']=np.min(df['x']+1,4)但这不起作用

除此之外:

df['x']=df['x']+1
df[df['x']>4]['x']=4

有人有更优雅的解决方案吗

谢谢


Tags: 数据dfnp语法val解决方案min表面
2条回答

您可以使用剪辑:

(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会比较两个值(或数组),以便广播

使用^{}

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

也许用^{}更好:

df['x'] = df['x'].add(1).clip_upper(4)
print (df)
   x
0  2
1  4
2  4

编辑:

需要^{}按条件获取新值:

df['x']=df['x'] + 1
df.loc[df['x'] > 4, 'x'] = 4
print (df)
   x
0  2
1  4
2  4

相关问题 更多 >