【发布时间】:2016-09-18 03:45:21
【问题描述】:
我有以下代码:
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 类型,并且该系列中的每个值都是浮点数,而浮点数没有 min/max 属性。
我以为我只是在这里遗漏了一些简单的东西,但是我对 Python 和 Pandas 的有限知识让我很难过。如何将 lambda 仅应用于“d”列?
【问题讨论】:
-
在这种情况下,您可以通过
f(frame['d'])直接在Series上运行f