Я не думаю, что вы можете сделать это одним махом.Я думаю, что вам нужно создать поиск.
Если это ваш текущий фрейм данных:
import pandas as pd
raw_data = {'product_name': ['04.Thaai Tea', '06.Thaien Tea',
'08.Maango Tea', '09.MangoIs Tea',
'10.MangoKre Tea'],
'product_sold': [10, 25, 40, 5, 5],
'product_revenue': [650, 1625, 2600, 325, 325]}
tea_data = pd.DataFrame(raw_data)
Я думаю, вам нужно выполнить поиск следующим образом:
# create a new dataframe that has correct mapping
raw_data_map = {'product_number': ['04', '06', '08', '09', '10'],
'product_name': ['Thaai Tea', 'Thaien Tea', 'Maango Tea', 'MangoIs Tea', 'MangoKre Tea'],
'product_tea_category': ['Thai Tea', 'Thai Tea', 'Mango Tea', 'Mango Tea', 'Mango Tea']}
# create tea map
tea_map = pd.DataFrame(raw_data_map)
И «удалить» product number
из ваших текущих данных:
# step one, strip off the first two characters and make a new column
tea_data['product number'] = tea_data['product_name'].str[:3]
# relpace '.' with null
tea_data['product number'] = tea_data['product number'].str.replace('.', '')
Тогда это позволит вам объединить и вытянуть tea category
:
tea_data.merge(tea_map[['product_number','product_tea_category']] , left_on='product number', right_on='product_number')
Что выглядит следующим образом: ![Screen Shot](https://i.stack.imgur.com/aRAhZ.png)
Затем, наконец, вы можете запустить groupby
, чтобы получить желаемый результат:
tea_data.groupby(['product_tea_category']).sum()
![enter image description here](https://i.stack.imgur.com/k5KzG.png)