Суммирование строк на основе ключевого слова в индексе - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь объединить несколько строк на основе ключевого слова, которое является частью индекса - но это не весь индекс.Например, индекс может выглядеть следующим образом:

                   Count
1234_Banana_Green   43
4321_Banana_Yellow  34
2244_Banana_Brown   23
12345_Apple_Red     45

. Я хотел бы суммировать все строки, в которых есть одно и то же "ключевое слово", и создать общую строку "банан".Есть ли способ сделать это без поиска по ключевому слову "банан"?В моих целях это ключевое слово меняется каждый раз, и я хотел бы иметь возможность автоматизировать этот процесс суммирования.Любая помощь очень ценится.

Ответы [ 2 ]

2 голосов
/ 24 сентября 2019

Может быть это:

df.groupby(df.index.to_series()
           .str.split('_', expand=True)[1]
          )['Count'].sum()

Вывод:

1
Apple      45
Banana    100
Name: Count, dtype: int64
0 голосов
/ 24 сентября 2019

С учетом следующего кадра данных:

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'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...