我有两个数据框。
我的主要数据框是 dffinal
date id och och1 och2 och3 cch1 LCH L#
0 3/27/2020 1 -2.1 3 3 1 5 NaN NaN
1 4/9/2020 2 2.0 1 2 1 3 NaN NaN
我的第二个数据框是 df2
date och cch och1 och2 och3 cch1
0 5/30/2012 -0.7 -0.7 3 -1 1 56
1 9/16/2013 0.9 -1.0 6 4 3 7
2 9/26/2013 2.5 5.4 2 3 2 4
3 8/26/2016 0.1 -0.7 4 3 5 10
我有这个循环
for i in dffinal.index:
df3=df2.copy()
df3 = df3[df3['och1'] >dffinal['och1'].iloc[i]]
df3 = df3[df3['och2'] >dffinal['och2'].iloc[i]]
df3 = df3[df3['och3'] >dffinal['och3'].iloc[i]]
df3 = df3[df3['cch1'] >dffinal['cch1'].iloc[i]]
dffinal['LCH'][i] =df3["och"].mean()
dffinal['L#'][i] =len(df3.index)
从我的代码中可以看出,LCH和L#的值是根据上述条件从df2(df3)获得的。
这段代码可以正常工作,但速度非常慢。我发现可以使用pandas向量化来提高效率。然而,我无法弄清如何在我的情况下实现它。
这是我的期望结果。
date id och och1 och2 och3 cch1 LCH L#
0 3/27/2020 1 -2.1 3 3 1 5 0.900000 1.0
1 4/9/2020 2 2.0 1 2 1 3 1.166667 3.0
如果您能帮助我提高代码的效率,我将非常感激。
正确答案
我个人使用@shadowtalker的答案简单方法,因为我能够理解它的工作原理。
最有效的答案是快速但复杂
diffinal
是如何定义的? - shadowtalkerdiffinal
只是我的第一个数据框。 - Bogdan Titomir