我想根据两列中的唯一对分割pandas数据帧,然后选择相对于该对的行并投影剩余的列。
df: Col1 Col2 Col3 Col4
1 1 a 100
1 2 b 200
1 2 c 300
1 2 d 400
3 4 e 500
3 4 f 600
然后
idxs = (...df...) # expression on df
for idx in idxs:
print(idx)
group = (...df...) # expression on df
print(group)
应该产生类似
的东西(1,1)
Col3 Col4
a 100
(1,2)
Col3 Col4
b 200
c 300
d 400
(1,3)
Col3 Col4
e 500
f 600
选择和投影部分看似简单,但获得独特的配对并不容易。我怎样才能合理有效地实现这一目标?
答案 0 :(得分:1)
使用groupby
for x,y in df.groupby(['Col1','Col2']):
print(x)
print(y)
(1, 1)
Col1 Col2 Col3 Col4
0 1 1 a 100
(1, 2)
Col1 Col2 Col3 Col4
1 1 2 b 200
2 1 2 c 300
3 1 2 d 400
(3, 4)
Col1 Col2 Col3 Col4
4 3 4 e 500
5 3 4 f 600