Я пытаюсь найти ежемесячные повторяющиеся расходы для того же идентификатора, категории и той же суммы. Расходы должны появиться как минимум в течение 3 месяцев подряд.
Следующий код не дает правильных результатов.
import pandas as pd
# Updated Sample DataFrame
data = {
'id': [1, 1, 1, 2, 2, 2, 1, 1, 2, 2,2,2],
'date': ['2023-01-17', '2023-01-15', '2022-11-16', '2023-01-16', '2022-12-14', '2022-11-10', '2022-12-20', '2022-12-10', '2023-01-25', '2022-11-05','2022-10-05','2022-09-07'],
'category': ['Groceries', 'Utilities', 'Groceries', 'Groceries', 'Utilities', 'Groceries', 'Groceries', 'Utilities', 'Groceries', 'Utilities','Utilities','Utilities'],
'amount': [50, 50, 50, 60, 80, 80, 50, 55, 75, 75,75,75]
}
df = pd.DataFrame(data)
df['date'] = pd.to_datetime(df['date']) # Convert 'date' column to datetime format
# Sort DataFrame
df = df.sort_values(by=['id','category','amount', 'date'], ascending=[True, True,True,False])
df['recurring'] = 0
for i in range(len(df)-2):
if (df.iloc['id'] == df.iloc[i+1]['id'] == df.iloc[i+1]['id']) and \
(df.iloc['category'] == df.iloc[i+1]['category'] == df.iloc[i+1]['category']) and \
df.iloc['amount'] == df.iloc[i+1]['amount'] == df.iloc[i+1]['amount'] and \
(df.iloc['date'].to_period('M') - df.iloc[i-1]['date'].to_period('M')) == 1 and (df.iloc[i-1]['date'].to_period('M') - df.iloc[i-2]['date'].to_period('M')) == 1:
df['recurring'] = 1
print(df)
Однако я получаю следующий ответ. Все значения для повторяющегося столбца равны 0. Что не так с логикой?
id date category amount recurring
0 1 2023-01-17 Groceries 50 0
6 1 2022-12-20 Groceries 50 0
2 1 2022-11-16 Groceries 50 0
1 1 2023-01-15 Utilities 50 0
7 1 2022-12-10 Utilities 55 0
3 2 2023-01-16 Groceries 60 0
8 2 2023-01-25 Groceries 75 0
5 2 2022-11-10 Groceries 80 0
9 2 2022-11-05 Utilities 75 0
10 2 2022-10-05 Utilities 75 0
11 2 2022-09-07 Utilities 75 0
4 2 2022-12-14 Utilities 80 0
ожидаемый результат:
id date category amount recurring
0 1 2023-01-17 Groceries 50 1
6 1 2022-12-20 Groceries 50 0
2 1 2022-11-16 Groceries 50 0
1 1 2023-01-15 Utilities 50 0
7 1 2022-12-10 Utilities 55 0
3 2 2023-01-16 Groceries 60 0
8 2 2023-01-25 Groceries 75 0
5 2 2022-11-10 Groceries 80 0
9 2 2022-11-05 Utilities 75 1
10 2 2022-10-05 Utilities 75 0
11 2 2022-09-07 Utilities 75 0
4 2 2022-12-14 Utilities 80 0
Подробнее здесь: https://stackoverflow.com/questions/781 ... g-expenses
Код Python для ежемесячных текущих расходов ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как сгенерировать уникальный идентификатор в php на основе текущих данных и времени?
Anonymous » » в форуме Php - 0 Ответы
- 79 Просмотры
-
Последнее сообщение Anonymous
-