python - 将函数应用于数据框
问题描述
我有一个看起来像这样的数据框“df”:
Y E
1312 2.098650e-10 4.05909
1313 9.294030e-10 4.11673
1314 5.596410e-10 4.18051
1315 7.395250e-10 4.18648
1316 3.997430e-10 4.20233
我想将函数应用于 Y 列和 E 列中的值到新列“func_d”。
def func(typ, Y, E):
if typ=='d':
return E/Y
else:
return E*Y
def func_d(Y,E):
return func('d', Y, E)
我明白了
TypeError: ("'Series' object is not callable", '发生在索引 1312')
当我这样做时:
df['func_d'] = df.apply(func_d(df['Y'],df['E']), axis=1)
我没有func_d
正确传递变量吗?
解决方案
什么是“典型”?你想以此作为论据吗?理想情况下,该函数应将行或列作为参数。所以,这样的事情可能会起作用:
def func_d(row, typ='d'):
E = row['E']
Y = row['Y']
if typ == 'd':
return E/Y
else:
return E*Y
df['func_d'] = df.apply(lambda row:func_d(row,'d'), axis = 1)
如果没有 lambda 函数,它将是
df['func_d'] = df.apply(func_d, axis = 1, args = ("d"))
推荐阅读
- javascript - 用于获取页面输入的 onload javascript;然后将两个 css id 设置为 display:none' 和 "display:inline' 切换两个
拜托,我对javascript魔法很了解。我将不胜感激在页面加载时运行时的帮助,返回一个值或字符串以
- php - 使用 PHP MySQLi 准备语句的动态 SQL 连接
- python - 使用列列表过滤数据框,其中至少有一个列满足条件?
- google-apps-script - 基于单元格值脚本将行移动到另一个工作表
- java - 在 webview 中使用 findnext 时禁用平滑过渡
- javascript - 如何解构道具
- jquery - 如何获取使用 jquery 单击按钮的特定值
- django - 如何编写有问题的代码以避免出现错误?
- javascript - TopoJSON 中的未定义属性
- apache - 重定向主站点,子域除外