【发布时间】:2018-01-17 12:39:07
【问题描述】:
今天遇到这个lambda表达式,不明白怎么用的:
data["class_size"]["DBN"] = data["class_size"].apply(lambda x: "{0:02d}{1}".format(x["CSD"], x["SCHOOL CODE"]), axis=1)
这行代码似乎没有调用 lambda 函数或将任何参数传递给它,所以我很困惑它是如何做任何事情的。这样做的目的是获取两列 CSD 和 SCHOOL CODE,并将每行中的条目组合成一个新行 DBN。那么这个 lambda 表达式会被使用吗?
【问题讨论】:
-
查看 pandas 文档,
apply将作为参数传入的函数应用到某些东西,这个lambda充当将作为参数传入的函数,然后将由apply函数 -
发布一个示例 DataFrame 会有所帮助。然后缩小您对该 DataFrame 的困惑。
-
为什么你用
data["class_size"]["DBN"]而不是data["DBN"] -
是的。
apply可以接受 lambda 表达式:pandas.pydata.org/pandas-docs/stable/10min.html#apply -
Apply 可以接受 lambda 表达式,但您使用的是应用于列而不是整个数据框。请参阅下面的答案。