如何获取每个GROUP BY组中第一行的索引?
(我知道.groupby.first()返回每组中的第一行,但我不知道如何获取他们的索引)
非常感谢!
答案 0 :(得分:3)
IIUC,这应该适用于您,使用first_valid_index
:
df.groupby('grouping_variable').apply(lambda x: x.first_valid_index())
示例:
>>> df
data group
0 -0.430336 b
1 2.323743 b
2 -0.065441 b
3 -0.894935 b
4 0.529603 b
5 -1.386138 b
6 -1.198493 b
7 -1.025802 a
8 1.151468 b
9 -0.831743 b
>>> df.groupby('group').apply(lambda x: x.first_valid_index())
group
a 7
b 0
答案 1 :(得分:3)
对于first
,您可以改为使用head
:
np.random.seed(123)
df = pd.DataFrame({'A':np.random.choice(list('ABC'), 50),'values':np.random.randint(0,100,50)})
df.groupby('A').head(1)
输出:
A values
0 C 75
1 B 34
4 A 22
答案 2 :(得分:3)
您可以使用drop_duplicates
df.drop_duplicates('A',keep='first')