我已经签出地图,申请,mapapply,并结合,但似乎无法找到一个简单的方法做到以下几点:如何在熊猫中使用多列来映射函数?
我有一个数据框10列。我需要他们三人进入这需要标量和返回一个标量函数...
some_func(int a, int b, int c) returns int d
我想申请这一点,并在其结果数据帧创建一个新列。
df['d'] = some_func(a = df['a'], b = df['b'], c = df['c'])
所有这一切我已经找到了解决方案,似乎表明以some_func改写与系列,而不是标量的工作,但因为它是另一个软件包的一部分,这是不可能的。我如何优雅地做到上述?
这取决于你的功能正在做的事情,但通常你会做这样的事'高清FUNC(行):返回行[“一”] *行[“b”] *行[ 'c'] df.apply(lambda行:func(row),axis = 1)'理想情况下y ou想要以某种方式编写函数,以便它可以在整个系列上运行,因此它可以被矢量化,能够显示你真正想要做什么 – EdChum 2015-02-11 14:48:23
如果你的函数将'Series'作为参数,那么你可以将其重写为'def some_func(a,b,c):return a * b * c df ['d'] = some_func(df ['a'],df ['b'],df ['c'])' – EdChum 2015-02-11 14:50:48
“ some_func“是一个复杂的函数,它使SQL调用来填充数据,所以我在这里简化了它。建议使用df.apply。 – ashishsingal 2015-02-11 16:50:27