小编lea*_*day的帖子

对熊猫数据帧进行高效计算

我需要让代码更快.问题很简单,但我没有找到一个好的方法来进行计算而不循环遍历整个DataFrame.

我有三个dataFrames:A,B和C.

A和B各有3列,格式如下:

A(10行):

     Canal Gerencia grad
0    'ABC'   'DEF'   23
etc...
Run Code Online (Sandbox Code Playgroud)

B(25行):

     Marca  Formato  grad
0    'GHI'   'JKL'    43
etc...
Run Code Online (Sandbox Code Playgroud)

另一方面,DataFrame C有5列:

C(5000行):

     Marca  Formato  Canal  Gerencia  grad
0    'GHI'   'JKL'    'ABC'   'DEF'   -102
etc...
Run Code Online (Sandbox Code Playgroud)

我需要一个具有相同长度的DataFrame'C'的向量,它将三个表中的'grad'值相加,例如:

m = 'GHI'
f = 'JKL'
c = 'ABC'
g = 'DEF'
res = C['grad'][C['Marca']==m][C['Formato']==f][C['Canal']==c][C['Gerencia']==g] + A['grad'][A['Canal']==c][A['Gerencia']==g] + B['grad'][B['Formato']==f][B['Marca']==m]
>>-36
Run Code Online (Sandbox Code Playgroud)

我尝试循环遍历C dataFrame,但速度太慢.我理解我应该尽量避免循环通过dataFrame,但不知道如何做到这一点.我的实际代码是以下(工作,但非常慢):

res=[]
for row_index, row in C.iterrows():
    vec1 = A['Gerencia']==row['Gerencia']
    vec2 = A['Canal']==row['Canal']
    vec3 = B['Marca']==row['Marca']
    vec4 = B['Formato']==row['Formato']
    grad = row['grad'] …
Run Code Online (Sandbox Code Playgroud)

python pandas

5
推荐指数
1
解决办法
124
查看次数

标签 统计

pandas ×1

python ×1