Код Python для ежемесячных текущих расходовPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Код Python для ежемесячных текущих расходов

Сообщение Anonymous »

Я пытаюсь найти ежемесячные повторяющиеся расходы для того же идентификатора, категории и той же суммы. Расходы должны появиться как минимум в течение 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • API ленты ежемесячных платежей Stripe
    Anonymous » » в форуме Php
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Как реализовать бесплатные пробные версии для ежемесячных и годовых подписок в iOS с помощью RevenueCat?
    Anonymous » » в форуме IOS
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Исправлено для ежемесячных регистраций и запросов вкладчиков
    Anonymous » » в форуме MySql
    0 Ответы
    36 Просмотры
    Последнее сообщение Anonymous
  • В проекте Python для отслеживания личных расходов [закрыто]
    Anonymous » » в форуме Python
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Как сгенерировать уникальный идентификатор в php на основе текущих данных и времени?
    Anonymous » » в форуме Php
    0 Ответы
    79 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»