当使用pandarallel在我的数据文件上运行.apply方法时使用所有核心时,我遇到了一种以前从未见过的语法。相反,这是一种我不理解的使用点语法的方法。
import pandas as pd
from pandarallel import pandarallel
df = pd.DataFrame([[1, 2, 3], [4, 5, 6]], columns=['a', 'b'])到目前为止还不错,只是建立了一个数据框架。接下来,为了让pandarallel做好准备,我们做了
pandarallel.initialize()接下来是我感到困惑的地方:为了在dataframe上调用这个方法
df.parallel_apply(func)我的问题是:如果dataframe df是使用pandas库实例化的,而pandas没有一个名为parallel_apply的方法,那么在pandas对象上如何使用pandarallel方法呢?
我猜想这与初始化有关,但我以前从未见过这种情况,我不明白后端发生了什么。
发布于 2020-08-25 13:56:09
可以将方法创建到以前创建的对象:
def my_func(self):
return 2*self
pd.DataFrame.my_method = my_func
df.my_method()
a b
2 8
4 10
6 12您甚至可以传递参数:
def sum_x(self, x):
return self+x
pd.DataFrame.sum_x = sum_x
df.sum_x(3)
a b
4 7
5 8
6 9第一个参数是self,它是类中的一个常用方法。
发布于 2020-08-25 13:50:24
它似乎发生在initialize
DataFrame.parallel_apply = parallelize(*args)似乎Dataframes允许稍后添加属性,这就是这里所发生的事情。parallelize似乎是一个工厂函数,它基于传递的args创建函数。它似乎正在创建作为方法的函数,并且它创建的方法被分配给parallel_apply。
https://stackoverflow.com/questions/63580226
复制相似问题