Мои поля DataFrame 3 - это учетная запись, месяц и зарплата.Pandas groupby + преобразование, принимающее часы за 600 миллионов записей
account month Salary
1 201501 10000
2 201506 20000
2 201506 20000
3 201508 30000
3 201508 30000
3 201506 10000
3 201506 10000
3 201506 10000
3 201506 10000
Я делаю groupby на счете и в месяц и рассчитывая сумму зарплаты для группы. Затем удалите дубликаты.
MyDataFrame['salary'] = MyDataFrame.groupby(['account'], ['month'])['salary'].transform(sum)
MyDataFrame = MyDataFrame.drop_duplicates()
Ожидая выход, как показано ниже:
account month Salary
1 201501 10000
2 201506 40000
3 201508 60000
3 201506 40000
Это хорошо работает для нескольких записей. Я пробовал то же самое за 600 миллионов записей, и он продолжается с 4-5 часов. Первоначально, когда я загружал данные, используя данные pd.read_csv(), полученные в 60 ГБ ОЗУ, до 1-2 часов использования ОЗУ было от 90 до 120 ГБ. Через 3 часа процесс занимает 236 ГБ оперативной памяти, и он все еще работает.
Просьба предложить, если для этого имеется другой альтернативный более быстрый способ.
EDIT:. Сейчас 15 минут в df.groupby ([ 'счет', 'месяц'], вроде = False) [ 'зарплата'] сумма()
Не следует утверждение просто: 'df.groupby ([ 'счет', 'месяц']) Salary.sum()'.? – Alexander
@Alexander Я сейчас пытаюсь это сделать, не уверен, что оба они разные – Vipin
@Alexander У меня возникла ошибка «Несовместимый индекс вставленных столбцов с индексом кадра», я запускаю его как MyDataFrame ['pay'] = MyDataFrame.groupby ([ account '], [' month ']) [' pay ']. sum() – Vipin