我试图设置pandas DataFrame列的最大值。例如:
my_dict = {'a':[10,12,15,17,19,20]}
df = pd.DataFrame(my_dict)
df['a'].set_max(15)
会产生:
a
0 10
1 12
2 15
3 15
4 15
5 15
但它没有。
找到最大值有一百万个解决方案,但设置最大值...至少我能找到的。
我可以遍历列表,但我怀疑有更快的方法来完成大熊猫。我的列表会显着更长,因此我希望迭代需要相对较长的时间。此外,我希望能够处理NaN
的任何解决方案。
答案 0 :(得分:18)
我想你可以这样做:
maxVal = 15
df['a'].where(df['a'] <= maxVal, maxVal) # where replace values with other when the
# condition is not satisfied
#0 10
#1 12
#2 15
#3 15
#4 15
#5 15
#Name: a, dtype: int64
或者:
df['a'][df['a'] >= maxVal] = maxVal
答案 1 :(得分:15)
答案 2 :(得分:4)
从v0.21开始,您可以使用DataFrame.clip_upper
:
df.clip_upper(15)
a
0 10
1 12
2 15
3 15
4 15
5 15
同样,如果只想设置下限,请使用DataFrame.clip_lower
。这些方法也可以在Series
个对象上使用。