Панды - разделение столбцов и подсчет вхождений - PullRequest
0 голосов
/ 20 ноября 2018

Это информация о некоторых покупках, сделанных клиентами на телефонные аксессуары, мои реальные данные выглядят примерно так: Abstract Model 1 ~Samsung S6 | Sold: 4

У меня есть набор данных, который выглядит примерно так:

item               sold
Design1 ~Model1 1
Design2 ~Model1 2
Design1 ~Model2 3
Design2 ~Model2 1

Я хочу разбить столбец item на 2 столбца, design и model, и подсчитывать каждый раз, когда design был продан, и model был продан, индивидуально, на основеданные о продажах комбинаций дизайн + модель на входе.

Мой ожидаемый результат, основанный на первом наборе данных, будет выглядеть примерно так:

expected output:        

design    design_sold    model      model_sold

Design1   4              Model1     3
Design2   3              Model2     4

1 Ответ

0 голосов
/ 20 ноября 2018

попробуйте это,

df[['Design','Model']]=df['item'].str.split(' ~',expand=True)
print pd.concat([df.groupby('Design',as_index=False)['sold'].sum().rename(columns={'sold':'Desgin Sold'}),df.groupby('Model',as_index=False)['sold'].sum().rename(columns={'sold':'Model Sold'})],axis=1)

Вывод:

    Design  Desgin Sold   Model  Model Sold
0  Design1            4  Model1           3
1  Design2            3  Model2           4

Объяснение: '1. .str.split() используется для разделения вашей серии на фрейм.

groupby моделирование и проектирование и выполнение sum на сгруппированном объекте.

rename столбец и concat ваш фрейм данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...