С учетом следующего кадра данных:
raw_data = {'id': ['1234_Banana_Green', '4321_Banana_Yellow',
'2244_Banana_Brown', '12345_Apple_Red',
'1267_Apple_Blue']}
df = pd.DataFrame(raw_data).set_index(['id'])
Попробуйте этот код:
df = df.reset_index()
df['extracted_keyword'] = df['id'].apply(lambda x: x.split('_')[1])
df.groupby(["extracted_keyword"]).count()
И дает:
id
extracted_keyword
Apple 2
Banana 3
, если вы хотите восстановить индекс, добавьтев конце концов:
df = df.set_index(['id'])