Я сгруппировал фрейм данных.Затем я хочу использовать лямбда-функцию во всех этих группах.Однако код, который я использую, не возвращает правильные результаты.Я думаю, что есть проблема с группировкой или, возможно, лямбда-функцией.В частности, я собираюсь взять сгруппированный фрейм данных и вернуть только строки с наибольшим количеством JUGCODE.N для количества возвращаемых старших строк зависит от SPOT_NUM для этой группы.Итак, каждая группа должна возвращать разное количество строк.
Я попытался изменить группировку в исходном кадре данных.Затем я попытался указать нужную группировку в строке с лямбда-функцией.Я также исследовал сброс индекса.Я не уверен, что это как-то связано с этим.Но я все еще не получаю результаты, которые я ищу.
#subsetting the logs
filtered_logs = log_master.loc[(log_master['BILL_TYPE'] == "Town")]
#grouping the logs by everything except the JUGCODE - because that's the count I need
town_grouped = filtered_logs.groupby(['SPOT_ID','TIME', 'R_CODE', 'SPOT_NUM', 'CONTRACT_ID', 'NAME', 'CHNN', 'ZONE', 'MONTH', 'BILL_TYPE', 'MASTER', 'DATE', ]).count()
town_grouped1 = town_grouped.reset_index()
town_grouped1.head(10)
Вот так я сгруппировал фрейм данных, который я собираюсь использовать в своей лямбда-функции.
verified_spots = town_grouped1.groupby('SPOT_ID').apply(lambda grp: grp.nlargest((town_grouped1['SPOT_NUM'].iloc[0]), ['JUGCODE']))
Я обнаружил, что некоторые группы возвращают больше строк, чем SPOT_NUMдля своей группы.Вот проблему, которую я пытаюсь решить.
пример кода данных:
data = [['363662402','17:24:29','1061',3,'647333','BL08253061','CMDY','Savannah','201610','tampa','COMIC','10/01/2016',30], ['363662402', '17:31:15','1061',3,'647333','BL08253062','CMDY','Savannah','201610','tampa','COMIC', '10/03/2016',30], ['363662402','17:34:15','1061',3,'647333','BL08253061','CMDY','Savannah','201610','tampa','COMIC','10/02/2016',29], ['363662402','17:34:30','1061',3,'647333','BL08253061','CMDY','Savannah','201610','tampa','COMIC','10/02/2016',1], ['363662403','16:26:14','1061',3,'647333','BL08258415','CMDY','Savannah','201610','tampa','COMIC','10/09/2016',30], ['363662394','20:39:12','1061',4,'647333','BL08253061','CMDY','Savannah','201610','tampa','COMIC','10/02/2016',30], ['363662394','22:48:01','1061',4,'647333','BL08253061','CMDY','Savannah','201610','tampa','COMIC','10/02/2016',30], ['363662394','22:40:21','1061',4,'647333','BL08253061','CMDY','Savannah','201610','tampa','COMIC','10/01/2016',29], ['363662394','19:44:51','1061',4,'647333','BL08253061','CMDY','Savannah','201610','tampa','COMIC','10/01/2016',23]]
town_grouped1 = pd.DataFrame(data, columns = ['SPOT_ID','TIME', 'R_CODE', 'SPOT_NUM', 'CONTRACT_ID', 'NAME', 'CHNN', 'ZONE', 'MONTH', 'BILL_TYPE', 'MASTER', 'DATE', 'JUGCODE'])