我有两只熊猫:
df1
id_event id_indiv odds
0 11545 3131 0.185185
1 11545 4529 0.088106
2 11545 9168 0.055402
3 11545 12922 0.088106
4 11545 12929 0.270270
5 11545 19936 0.037523
6 11545 24703 0.202020
7 11545 25951 0.043573
8 11545 26397 0.029762
9 11545 28177 0.219780
df2
id_event id_indiv final_odds
0 11545 3131 0.215054
1 11545 4526 -1.000000
2 11545 4529 0.060423
3 11545 9168 0.050251
4 11545 12922 0.060423
5 11545 12929 0.250000
6 11545 19936 0.019900
7 11545 24703 0.392157
8 11545 25951 0.052910
9 11545 26397 0.034014
10 11545 28177 0.377358
在本例中,有一个人的最终赔率为-1.00,因此很容易删除小于0的值:
df2.drop(df2[df2['final_odds']<0].index, inplace = True)
但是,运行此命令后,生成的DF大小不同:
df1
[8781 rows x 38 columns]
df2
[8737 rows x 38 columns]
DFs包含数千个事件和个人。 我需要将两个df合并,以使生成的df具有以下形状:
df3
id_event id_indiv odds final_odds
0 11545 3131 0.185185 0.215054
1 11545 4529 0.088106 0.060423
2 11545 9168 0.055402 0.050251
3 11545 12922 0.088106 0.060423
4 11545 12929 0.270270 0.250000
5 11545 19936 0.037523 0.019900
6 11545 24703 0.202020 0.392157
7 11545 25951 0.043573 0.052910
8 11545 26397 0.029762 0.034014
9 11545 28177 0.219780 0.377358
我尝试使用此命令创建一个新的临时df,它只包含df1中存在的行,但收到一个错误:
temp_df = df1.drop(df2[df2['id_indiv'] !=df1['id_indiv'] | df2['id_event'] != df1['id_event']].index )
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
是否有方法将这两个df合并,以获得与我的上述预期输出相匹配的结果df? 我认为最终df的大小应为8737 x 38列
让我们让它变得更简单,只要做
merge
还有
merge
A)如果您认为id列中存在重复项
首先,让我们获取您感兴趣的df2的子集
一旦我们有了df2_子集,我们就可以合并了
B)如果您知道id列中没有重复项
你只需一行就可以解决你的问题
相关问题 更多 >
编程相关推荐