Расчет суммы предыдущей транзакции другой категории для каждой транзакции в DataFrame ⇐ Python
Расчет суммы предыдущей транзакции другой категории для каждой транзакции в DataFrame
У меня есть DataFrame df, содержащий транзакции клиентов. Каждая строка в DataFrame представляет транзакцию и имеет следующие столбцы:
[*]KEY_ID: идентификатор клиента, совершившего транзакцию. [*]TYPE: тип транзакции, который может быть двух категорий. [*]DATE: дата совершения транзакции. [*]AMOUNT: сумма транзакции.
Мне нужно добавить в DataFrame новый столбец, содержащий сумму предыдущей транзакции противоположной категории для каждой транзакции. То есть для каждой транзакции определенного типа я хочу знать, какую сумму составила последняя транзакция другого типа, совершенная тем же клиентом до даты текущей транзакции.
Сначала я отсортировал df по KEY_ID и DATE:
df= df.sort_values(by=['KEY_ID', 'FECHA']) Затем попытался создать функцию, которая создает подмножество под названием previous_requests
def find_previous_request(строка): # Получить предыдущие запросы противоположного типа предыдущие_запросы = df[ (df['KEY_ID'] == строка['KEY_ID']) & (df['ТИП'] != строка['ТИП']) & (df['ДАТА'] < строка['ДАТА']) ] # Если есть предыдущие запросы, вернуть сумму самого последнего если не previous_requests.empty: вернуть previous_requests.iloc[-1]['AMOUNT'] # Если предыдущих запросов нет, вернуть NaN вернуть np.nan Ядро аварийно завершает работу, когда я применяю эту функцию.
Также попробовал следующий код:
df['prev_amount'] = df.groupby(['KEY_ID', 'TYPE'])['AMOUNT'].shift().fillna(0).astype(int) РЕДАКТИРОВАТЬ:
Ввод:
KEY_ID ТИП СУММА ДАТА 1 Мотор 5000 01.01.2020 1 Инструмент 3000 01.02.2020 1 Инструмент 7000 01.03.2020 2 Инструмент 2000 15 января 2020 г. 2 Мотор 6000 15 февраля 2020 г. 2 Инструмент 4000 15 марта 2020 г.
Ожидаемый результат:
KEY_ID ТИП СУММА ДАТА PREV_AMOUNT 1 Мотор 5000 01.01.2020 Нет 1 Инструмент 3000 01.02.2020 5000 1 Инструмент 7000 01.03.2020 5000 2 Инструмент 2000 15 января 2020 г. Нет 2 Мотор 6000 15 февраля 2020 г. 2000 2 Инструмент 4000 15 марта 2020 г. 6000
У меня есть DataFrame df, содержащий транзакции клиентов. Каждая строка в DataFrame представляет транзакцию и имеет следующие столбцы:
[*]KEY_ID: идентификатор клиента, совершившего транзакцию. [*]TYPE: тип транзакции, который может быть двух категорий. [*]DATE: дата совершения транзакции. [*]AMOUNT: сумма транзакции.
Мне нужно добавить в DataFrame новый столбец, содержащий сумму предыдущей транзакции противоположной категории для каждой транзакции. То есть для каждой транзакции определенного типа я хочу знать, какую сумму составила последняя транзакция другого типа, совершенная тем же клиентом до даты текущей транзакции.
Сначала я отсортировал df по KEY_ID и DATE:
df= df.sort_values(by=['KEY_ID', 'FECHA']) Затем попытался создать функцию, которая создает подмножество под названием previous_requests
def find_previous_request(строка): # Получить предыдущие запросы противоположного типа предыдущие_запросы = df[ (df['KEY_ID'] == строка['KEY_ID']) & (df['ТИП'] != строка['ТИП']) & (df['ДАТА'] < строка['ДАТА']) ] # Если есть предыдущие запросы, вернуть сумму самого последнего если не previous_requests.empty: вернуть previous_requests.iloc[-1]['AMOUNT'] # Если предыдущих запросов нет, вернуть NaN вернуть np.nan Ядро аварийно завершает работу, когда я применяю эту функцию.
Также попробовал следующий код:
df['prev_amount'] = df.groupby(['KEY_ID', 'TYPE'])['AMOUNT'].shift().fillna(0).astype(int) РЕДАКТИРОВАТЬ:
Ввод:
KEY_ID ТИП СУММА ДАТА 1 Мотор 5000 01.01.2020 1 Инструмент 3000 01.02.2020 1 Инструмент 7000 01.03.2020 2 Инструмент 2000 15 января 2020 г. 2 Мотор 6000 15 февраля 2020 г. 2 Инструмент 4000 15 марта 2020 г.
Ожидаемый результат:
KEY_ID ТИП СУММА ДАТА PREV_AMOUNT 1 Мотор 5000 01.01.2020 Нет 1 Инструмент 3000 01.02.2020 5000 1 Инструмент 7000 01.03.2020 5000 2 Инструмент 2000 15 января 2020 г. Нет 2 Мотор 6000 15 февраля 2020 г. 2000 2 Инструмент 4000 15 марта 2020 г. 6000
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Расчет суммы предыдущей транзакции другой категории для каждой транзакции в DataFrame
Anonymous » » в форуме Python - 0 Ответы
- 106 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Расчет общей суммы активов и общей суммы обязательств из баланса xbrl [закрыто]
Anonymous » » в форуме Python - 0 Ответы
- 95 Просмотры
-
Последнее сообщение Anonymous
-