我有数据 df1
Col1 Col2 Col3 Col4
12 10 R1 0.1
12 10 R2 0.1
12 8 R3 0.6
11 4 R4 0.2
12 10 R5 0.4
11 4 R6 0.1
df2是df1的子集
col 1 col 2 count
12 10 3
12 8 1
11 4 2
我想要将df2的col1和col2与df1匹配的行的输出,从而使df2中的每个组合自动化。
对于df2中12、10的组合,我想匹配df1中的行
col 1 col2 col3 col 4
12 10 R1 0.1
12 10 R2 0.1
12 10 R5 0.4
类似地,我想为df2(12,8)中的下一个组合创建一个循环
Col 1 col 2 col 3 col 4
12 8 R3 0.6
类似地,我想为df2(11,4)中的下一个组合创建一个循环
Col 1 col 2 col 3 col 4
11 4 R4 0.2
11 4 R6 0.1
我已经尝试过df3 = df1 [(df1.Col1 == 12.0)&(df1.Col2 == 10)],但想使其自动化而不提及组合
答案 0 :(得分:0)
我认为第二个DataFrame
是不必要的,只需按Col1
和Col2
列中唯一值的每种组合进行循环:
for i, g in df1.groupby(['Col1','Col2']):
print (i)
print (g)
如果要为DataFrame词典提供更多动态解决方案:
d = {f'{i[0]}_{i[1]}':g for i, g in df1.groupby(['Col1','Col2'])}
print (d)
{'11_4': Col1 Col2 Col3 Col4
3 11 4 R4 0.2
5 11 4 R6 0.1, '12_8': Col1 Col2 Col3 Col4
2 12 8 R3 0.6, '12_10': Col1 Col2 Col3 Col4
0 12 10 R1 0.1
1 12 10 R2 0.1
4 12 10 R5 0.4}
print (d['11_4'])
Col1 Col2 Col3 Col4
3 11 4 R4 0.2
5 11 4 R6 0.1