R pandas groupby индекс первой строки в каждой группе



Как получить индекс первой строки в каждой группе по группам?



(я знаю .метод groupBy.first () возвращает первую строку в каждой группе, но я не знаю, как получить их индекс)



Большое спасибо!

582   3  

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

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

Вы можете использовать drop_duplicates

df.drop_duplicates('A',keep='first')

Comments

    Ничего не найдено.