разделить данные во вложенном json для выполнения некоторых расчетов

надеюсь, что кто-то мне поможет. У меня есть вложенный файл json, и я пытаюсь вычислить разницу в возрасте между двумя строками файла, start_date и end_date с форматом даты только мм / гггг. Итак, я пытаюсь разделить его, чтобы я мог рассчитать разницу в году между end_date и start_date, если более 10 лет, я добавляю в другой список.

Это мой код ниже, но он выводит пустой список, и я не знаю, как его исправить. Любые советы или направления будут оценены

О ... Мне нужно использовать библиотеки Python по умолчанию, поэтому, хотя с пандами будет проще, я не могу их использовать.

      remove_card=[] 

def datebreakdown(data_file):
    expr1 = data_file['Credit Card']['start_date']
    expr2 = data_file['Credit Card']['end_date']
    breakdown1 = expr1.split('/') 
    breakdown2 = expr2.split('/')
    card_month = int(breakdown1[0]) - int(breakdown2[0])
    card_year= int(breakdown1[1]) - int(breakdown2[1])
    if card_year >= 10:
        return True
    elif card_year == 10 and card_year > 0:
        return True
    else:
        return False

for line in data_json: #data_json is name of the json file. 
    if datebreakdown(data_file) == True:
        remove_card.append(data_file)

1 ответ

Я думаю, что это условия, которые вы хотите:

          if card_year > 10:
        return True
    elif card_year == 10 and card_month > 0:
        return True
    else:
        return False

Первое условие должно быть строго >, нет >=. Второе условие должно сравнивать месяцы, когда разница в годах ровно 10.

Другая проблема заключается в том, что вы вычитаете даты в неправильном порядке. Вы вычитаете конец из начала, поэтому он всегда будет отрицательным. Таким образом, эти вычитания должны быть:

          card_month = int(breakdown2[1]) - int(breakdown1[0])
    card_year= int(breakdown2[1]) - int(breakdown1[1])
      def datebreakdown(data_file):
    expr1 = data_file['Credit Card']['start_date']
    expr2 = data_file['Credit Card']['end_date']
    year1, month1 = expr1.split('/') 
    year2, month2 = expr2.split('/')
    start_date = int(year1) + int(month1)/12
    end_date = int(year2) + int(month2)/12
    return end_date - start_date > 10

ДЕМО

Другие вопросы по тегам