【发布时间】:2021-05-02 21:15:25
【问题描述】:
我以前没有使用过 numpy 矢量化。这是我正在工作的一个小例子。
import numpy as np
import pandas as pd
def my_func(x, y):
return x+y
>>> df = pd.DataFrame({'A': np.random.randint(1, 100, 3), 'B': np.random.randint(1, 100, 3)})
>>> df
A B
0 97 58
1 78 64
2 53 25
我的问题是在处理大型数据集时,是否有更好的方法将列传递给我的 user_func 而不是传递多个列?有没有办法通过整行?
>>> df['result'] = np.vectorize(divide)(df['A'], df['B'])
>>> df
A B result
0 97 58 1.672414
1 78 64 1.218750
2 53 25 2.120000
【问题讨论】:
-
我没有得到关于
np.vectorize的炒作。这只是一个美化的 for 循环。为什么不df['C'] = df['A']/df['B']? -
@QuangHoang 如前所述,我正在处理一个巨大的数据框,我的功能并不像添加两列那么简单。这里只展示了一个小样本。
-
我认为你要求人们重新设计你的函数而不知道它的作用或外观是不公平的。也就是说,对于最一般的情况,您可以按照下面的回答执行
apply。
标签: python pandas numpy vectorization