我有以下代码:
这将导致:
尽管如此,它会导致错误: AttributeError: 'float'对象没有'max'属性
我尝试调试它。看起来frame['d']是一个Series类型,该系列中的每个值都是float类型,而float类型没有min/max属性。
我认为我可能只是忽略了一些简单的东西,但是我的Python和Pandas知识有限,所以很难做到这一点。如何仅对列“d”应用lambda函数?
import pandas as pd
frame = pd.DataFrame(np.random.randn(4,3), columns=list('bde'),index=['Utah','Ohio','Texas','Oregon'])
frame
b d e
Utah 0.479210 0.161892 -1.315375
Ohio -0.572543 0.080203 -0.446178
Texas 0.052954 0.043417 0.365056
Oregon 1.462631 0.244453 2.207720
f = lambda x: x.max()-x.min()
frame.apply(f)
这将导致:
b 2.035174
d 0.201035
e 3.523095
dtype: float64
我正在尝试学习如何仅对特定列应用lambda表达式,因此我想仅将lambda应用于“d”列。所以这就是我所做的:
frame['d'].apply(f)
尽管如此,它会导致错误: AttributeError: 'float'对象没有'max'属性
type(frame['d'])
pandas.core.series.Series
frame['d'].dtype
dtype('float64')
我尝试调试它。看起来frame['d']是一个Series类型,该系列中的每个值都是float类型,而float类型没有min/max属性。
我认为我可能只是忽略了一些简单的东西,但是我的Python和Pandas知识有限,所以很难做到这一点。如何仅对列“d”应用lambda函数?
Series
上直接运行f(frame['d'])
来直接运行f
。 - Alex Riina