Панды: добавление сводной информации в новые столбцы в фрейме - PullRequest
0 голосов
/ 17 декабря 2018

Работа над назначением класса.

Наш текущий набор данных имеет информацию, которая выглядит следующим образом:

    Item ID      Item Name                                  Price
0   108          Extraction, Quickblade Of Trembling Hands  3.53
1   143          Frenzied Scimitar                          1.56
2   92           Final Critic                               4.88
3   100          Blindscythe                                3.27
4   131          Fury                                       1.44

Нас попросили сгруппировать по двум значениям, что я и сделал.

item_df = popcolumns_df.groupby(["Item ID","Item Name"])  

У меня проблемы, хотя я пытаюсь добавить функции groupby к этому фрейму данных.Например, когда я запускаю счетчик, он заменяет цену.Попытка 1 просто заменила все данные в столбце цены на число.

item_counts = item_df.count().reset_index() 

Вывод:

    Item ID     Item Name           Price
0   0           Splinter             4
1   1           Crucifer             3
2   2           Verdict              6
3   3           Phantomlight         6
4   4           Bloodlord's Fetish   5

Попытка 2 сделала то же самое:

item_counts = item_df.size().reset_index(name="Counts")

Мой желаемый результат:

     Item ID    Item Name                Price    Count   Revenue
0    108        Extraction, Quickblade   3.53     12      42.36
1    143        Frenzied Scimitar        1.56     3        4.68
2    92         Final Critic             4.88     2        9.76
3    100        Blindscythe              3.27     1        3.27
4    131        Fury                     1.44     5        7.20

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

Ответы [ 2 ]

0 голосов
/ 30 декабря 2018

Я думаю, что вы ищете transform метод группового.Это возвращает совокупные показатели на исходном уровне ваших данных.

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

df['group_level_count'] = df.groupby(['foo', 'bar']).transform('count')  # or 'size' I think, depending whether you want to count NaNs

Связанный: * Как подсчитать количество строк в группе (идругая статистика) в группе панд по? * https://pandas.pydata.org/pandas-docs/stable/groupby.html#transformation

0 голосов
/ 17 декабря 2018

Если цены для любых двух эквивалентных предметов одинаковы, то вы можете включить "Price" в свою группу, а затем вычислить размеры группы :

summary = popcolumns_df \
    .groupby(["Item ID", "Item Name", "Price"]) \
    .size() \
    .rename("Count") \
    .reset_index()

summary['Revenue'] = summary['Count'] * summary['Price']

Вызовpd.Series.rename делает столбец в конечном кадре данных именем "Count".

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