Анализ корзины в python - PullRequest
       30

Анализ корзины в python

0 голосов
/ 09 апреля 2020

Я делаю анализ рыночной корзины для набора данных xlsx обувного магазина. Мой набор данных похож на

ReceiptID | ItemName | Категория | NetQty

123 | Черная обувь | Обувь | 5

123 | Коричневая обувь | Обувь | 4

125 | Сандалии | Сандалии | 2

125 | Пешавари | Обувь | 1

Я хочу, чтобы мои данные были такими, как

ReceiptID | ItemName | Категория | NetQty

123 | Черная обувь, коричневая обувь | Обувь | 9

125 | Сандал, Пешавари | Сандалии, Обувь | 3

def new_list(items): 
   Row_list=[ ] 
   for rows in items.ReceiptID: 
     if items.ReceiptD==ReceiptID-1: 
       my_list=[items.ItemName] 
       Row_list.append(my_list) 
     return(Row_list) 

Мне нужна функция в python, которая делает это, если я загружаю в нее фрейм данных. Спасибо:)

1 Ответ

0 голосов
/ 09 апреля 2020

IIU C вам нужно просто groupby + agg как следует

df = pd.DataFrame({"ReceiptID": [123,123,125,125],
                   "ItemName": ["Black Shoe", "Broen Shoe", "Sandal", "Peshawari"],
                   "Category": ["Shoes", "Shoes", "Sandal" ,"Shoes"],
                   "NetQty": [5,4,2,1]})


out = df.groupby("ReceiptID")\
        .agg({"ItemName":"unique",
              "Category":"unique",
              "NetQty":"sum"})\
        .reset_index()
   ReceiptID                  ItemName         Category  NetQty
0        123  [Black Shoe, Broen Shoe]          [Shoes]       9
1        125       [Sandal, Peshawari]  [Sandal, Shoes]       3

Если вы хотите просто строки вместо списков, вы можете добавить эти две строки

for col in ["ItemName", "Category"]:
    out[col] = out[col].str.join(", ")
   ReceiptID                ItemName       Category  NetQty
0        123  Black Shoe, Broen Shoe          Shoes       9
1        125       Sandal, Peshawari  Sandal, Shoes       3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...