【发布时间】:2018-12-18 16:44:37
【问题描述】:
假设以下 pandas 数据框:
A
1
1
2
4
10
还有以下功能:
def sum(A):
return 2 + A
我将 sum 函数应用于 pandas 数据框,如下所示:
df['sum'] = df['A'].apply(sum)
如何在另一列中返回函数的名称?例如,预期的输出如下所示:
A sum func_name
1 3 sum
1 3 sum
2 4 sum
4 6 sum
10 12 sum
原因是我想跟踪每个值所应用的内容。
【问题讨论】:
-
嗯,它已经在您的列名中了。如果你迭代函数,你可以得到它们的名字:
for func in funcs: df[func.__name__] = df['A'].apply(func)。 -
拜托,拜托,避免覆盖像
sum这样的python内置函数 -
如果函数是匿名的会发生什么? (
df['A'].apply(lambda a: 2 + a)) -
@ernest_k,这正是应该首选基于显式字典的映射的原因。试图在我的回答中解释这一点。
标签: python python-3.x pandas