Pandas: Удалите последние n строк из каждой группы после использования groupby в кадре данных.

Pandas Grouping and Aggregating: Split-Apply-Combine Exercise-32 with Solution

Напишите программу Pandas для разделения заданного набора данных с помощью группировки по нескольким столбцам и удаления последних n строк из каждой группы.

Тестовые данные:

 ord_no purch_amt ord_date customer_id salesman_id0 70001 150,50 05.10.2012 3002 50021 70009 270,65  2012-09-10 3001 50032 70002 65,26 2012-10-05 3001 50013 70004 110,50 2012-08-17 3003 50034 70007 948,50 2012-09-10 3002 50025 70005 2400.60 2012-07-27 3002 50016 70008 5760.00 2012-09-10  3001 50017 70010 1983,43 2012-10-10 3004 50038 70003 2480,40 2012-10-10 3003 50039 70012 250,45 2012-06-27 3002 500210 70011 75.29 2012-08-17 3003 500311 70013 3045.60 2012-04-25 3001 5001 

Пример решения:

Код Python:

  импортировать панды как pdpd.set_option ('display.max_rows', None) # pd.set_option ('display.max_columns', None) df = pd.DataFrame ({'ord_no': [70001,70009,70002,7000  4,70007,70005,70008,70010,70003,70012,70011,70013], 'purch_amt': [150.5, 270.65, 65.26, 110.5, 948.5, 2400.6, 5760, 1983.43, 2480.4, 250.45, 75.29, 3045.6], '  ord_date ': [' 2012-10-05 ',' 2012-09-10 ',' 2012-10-05 ',' 2012-08-17 ',' 2012-09-10 ',' 2012-07-27  ',' 2012-09-10 ',' 2012-10-10 ',' 2012-10-10 ',' 2012-06-27 ',' 2012-08-17 ',' 2012-04-25 ']  , 'customer_id': [3002,3001,3001,3003,3002,3002,3001,3004,3003,3002,3003,3001], 'salesman_id': [5002,5003,5001,5003,5002,5001,5001,  5003,5003,5002,5003,5001]}) print ("Фрейм данных исходных заказов:") print (df) print (" nРазделите указанные данные на 'salesman_id', 'customer_id' мудро:") result = df.groupby  (['salesman_id', 'customer_id']) для имени, группа в результате: print (" nGroup:") print (name) print (group) n = 2 # result1 = df.groupby (['salesman_id', '  customer_id ']). tail (n) .index, axis = 0) print (" nОтбрасывание последних двух записей:") result1 = df.drop (df.groupby ([' salesman_id ',' customer_id ']). tail (  n) .index, axis = 0) print (result1)  

Пример вывода:

 Фрейм данных исходных заказов: ord_no purch_amt  ord_date customer_id salesman_id0 70001 150,50 2012-10-05 3002 50021 70009 270.65 2012-09-10 3001 50032 70002 65,26 2012-10-05 3001 50013 70004 110.50 2012-08-17 3003 50034 70007 948.50 2012-09-10 3002 50025 70005 2400.60  2012-07-27 3002 50016 70008 5760.00 2012-09-10 3001 50017 70010 1983,43 2012-10-10 3004 50038 70003 2480,40 2012-10-10 3003 50039 70012 250,45 2012-06-27 3002 500210 70011 75.29 2012-08-17  3003 500311 70013 3045.60 2012-04-25 3001 5001 Разделите указанные данные на 'salesman_id', 'customer_id': Группа: (5001, 3001) ord_no purch_amt ord_date customer_id salesman_id2 70002 65,26 2012-10-05 3001 50016 70008 5760,00 2012-09  -10 3001 500111 70013 3045. 60 2012-04-25 3001 5001 Группа: (5001, 3002) ord_no purch_amt ord_date customer_id salesman_id5 70005 2400.6 2012-07-27 3002 5001 Группа: (5002, 3002) ord_no purch_amt ord_date customer_id salesman_id0 70001 150,50 2012-10-05 300 948 50024 70001 150.50  2012-09-10 3002 50029 70012 250.45 2012-06-27 3002 5002 Группа: (5003, 3001) ord_no purch_amt ord_date customer_id salesman_id1 70009 270.65 2012-09-10 3001 5003Group: (5003, 3003) ord_no purch_amt ord_date customer_id salesman_id3 2012 70004  -08-17 3003 50038 70003 2480,40 2012-10-10 3003 500310 70011 75.29 2012-08-17 3003 5003 Группа: (5003, 3004) ord_no purch_amt ord_date customer_id salesman_id7 70010 1983,43 2012-10-10 3004 5003 Удаление последних двух записей: ord_no purch_amt  ord_date customer_id salesman_id0 70001 150,50 2012-10-05 3002 50022 70002 65,26 2012-10-05 3001 50013 70004 110,50 2012-08-17 3003 5003 

Редактор кода Python:

Оцените статью
nanomode.ru
Добавить комментарий