R pandas groupby每组中第一行的索引

时间:2018-06-05 15:39:56

标签: python pandas dataframe group-by

如何获取每个GROUP BY组中第一行的索引?

(我知道.groupby.first()返回每组中的第一行,但我不知道如何获取他们的索引)

非常感谢!

3 个答案:

答案 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')