Python 计算数据帧的最大最小值

Python 计算数据帧的最大最小值,python,pandas,Python,Pandas,我有这个数据框: a b c Utah 0.907184 0.000049 0.550308 NY 0.129423 1.606726 2.041340 DC 0.228202 1.041567 0.007727 Texas 0.947254 0.000211 0.346336 func=lambda x: max(x)-min(x) 我想将此函数应用

我有这个数据框:

            a           b           c
Utah    0.907184    0.000049    0.550308
NY      0.129423    1.606726    2.041340
DC      0.228202    1.041567    0.007727
Texas   0.947254    0.000211    0.346336
func=lambda x: max(x)-min(x)
我想将此函数应用于我的数据帧:

            a           b           c
Utah    0.907184    0.000049    0.550308
NY      0.129423    1.606726    2.041340
DC      0.228202    1.041567    0.007727
Texas   0.947254    0.000211    0.346336
func=lambda x: max(x)-min(x)
当我调用
df.apply(func)
时,它将函数应用于每一列:

a    0.817831
b    1.606677
c    2.033613
dtype: float64
我想计算数据帧中的最大值(2.041340,纽约)减去最小值(0.000049,犹他州),然后返回
2.041291

df.values.max() - df.values.min() 
计算数据帧中最高值和最低值之间的标量差

对于此数据帧,这将提供以下输出:

2.0412909999999997

我建议使用numpy的功能:

>>> df.values.ptp()
2.0412909999999997
如果您想要4x3结果,只需将其重新指定到位:

df[:] = df.values.ptp()

你能展示你的预期产出吗?4x3结果中的所有细胞都是一样的,不是吗?是的,请稍等,我很困惑。是否需要显示每行中最小值和最大值的列?从3x3变为4x3?很高兴能添加更多的智慧。走吧,是的,看起来很简单。。。为什么我要挣扎那么多…谢谢you@S.Gu如果不是您刚才删除的问题中的“返回4x3的数据帧”,我会在10分钟前发布这篇文章。下一次,请在发布之前正确地写下你的问题。因此,如果你使用'apply'或'map'@S.Gu当然可以,但你不应该这样做。这将是不必要的慢和更复杂。@S.Gu,你想在所有单元格中构建一个4x3矩阵吗?
2.04129
!我不知道它的存在!伟大的关于这个函数,我希望
df.ptp()
返回一个序列,它是每列计算的结果。但是它返回了一个错误,df.ptp()对于dataframe now不存在?@S.Gu
ptp
是一个NumPy ndarray方法,它没有在Pandas中实现。因此,如果您想为每列计算它,您应该在NumPy中传递一个轴-
pd.Series(df.values.ptp(axis=0))
只需注意,您的函数执行与pd.Series(df.values.ptp(axis=0))完全相同的操作(并返回相同的结果)。