性能问题熊猫600万行

时间:2020-06-11 19:34:38

标签: pandas performance jupyter-notebook

需要一个帮助。

我正在尝试连接两个数据帧。第一个具有58k行,其他具有100行。要以这样的方式进行连接:58k行中的每个行都有来自其他df的100行。因此,总共580万行。 性能是非常可怜的,需要1个小时做10 pct。有什么改进建议吗? 这是代码段。

def myfunc(vendors3,cust_loc):
cust_loc_vend = pd.DataFrame()
cust_loc_vend.empty
for i,row in cust_loc.iterrows():
    clear_output(wait=True)
    a= row.to_frame().T
    df= pd.concat([vendors3, a],axis=1, ignore_index=False)
    #cust_loc_vend = pd.concat([cust_loc_vend, df],axis=1, ignore_index=False)
    cust_loc_vend= cust_loc_vend.append(df)
    print('Current progress:',np.round(i/len(cust_loc)*100,2),'%')
return cust_loc_vend

例如如果第一个DF有5行,第二个DF有100行

DF1(示例2列) enter image description here

enter image description here

我想要一个合并的DF,以使DF 2中的每一行都具有DF1-中的所有行 enter image description here

1 个答案:

答案 0 :(得分:1)

您所希望的只是一个联接。但是由于没有列列,您可以做的是创建一个在两个数据帧中都相似的列,然后最终将其删除。

df['common'] = 1
df1['common'] = 1

df2 = pd.merge(df, df1, on=['common'],how='outer')

df = df.drop('tmp', axis=1)

其中df和df1是数据帧。