Отметить первое вхождение в столбце данных - PullRequest
1 голос
/ 16 марта 2020

Допустим, у меня есть следующий фрейм данных

Orignal dataframe

Теперь я хочу посчитать, когда у животного есть определенное количество ног ( первое животное с 2 ногами - сокол, паук - первое с 8 ногами, например, sh без ног и лошадь с 4), чтобы получить что-то вроде этого

Desired dataframe

Я думаю, это как-то связано с drop_dplicates (keep = "first") (чтобы получить нужные), однако оттуда я не знаю, как следовать оптимальным образом

Это DDL для фрейма данных

df = pd.DataFrame({
'animal': ['falcon','eagle', 'dog', 'spider', 'fish','horse','cow','ant','worm'],
'num_legs': [2,2,4,8,0,4,4,8,0],
'num_wings': [2,2,0,0,0,0,0,0,0]})

Ответы [ 2 ]

4 голосов
/ 16 марта 2020

Использование Series.duplicated с numpy.where:

df['Desired'] = np.where(df['num_legs'].duplicated(), '', 'X')
print (df)

   animal  num_legs  num_wings Desired
0  falcon         2          2       X
1   eagle         2          2        
2     dog         4          0       X
3  spider         8          0       X
4    fish         0          0       X
5   horse         4          0        
6     cow         4          0        
7     ant         8          0        
8    worm         0          0        
3 голосов
/ 16 марта 2020

Похоже, вы можете использовать duplicated:

df.loc[~df.num_legs.duplicated(), 'Desired'] = 'X'

print(df.fillna(''))

  animal  num_legs  num_wings Desired
0  falcon         2          2       X
1   eagle         2          2        
2     dog         4          0       X
3  spider         8          0       X
4    fish         0          0       X
5   horse         4          0        
6     cow         4          0        
7     ant         8          0        
8    worm         0          0        
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...