Сравнение столбца даты файла CSV с сегодняшней датой - PullRequest
1 голос
/ 05 февраля 2020

Мне нужно сравнить дату моих больших данных с сегодняшней датой, чтобы вычислить значение другого столбца, если дата больше или меньше сегодняшней.

Мой код такой же, как и ниже, однако я получаю ошибку!

Я пробовал Timestamp.now(), но мой python 3.6 не может его распознать.

import datetime
def midspread_calcs():
    for row in df_midspread:
        if df_midspread['Date']<datetime.datetime.now():
           df_midspread['Midspread']= df_midspread.Oldrate*df_midspread.Value
        else:
           df_midspread['Midspread']= df_midspread.Newrate*df_midspread.Value 

result = midspread_calcs()

Ответы [ 3 ]

0 голосов
/ 05 февраля 2020

Некоторые из серьезных проблем на первый взгляд:

1 - Ваш код для l oop неверно назван

    for row in df_midspread:
        if row['Date']<datetime.datetime.now():
           row['Midspread']= row.Oldrate*row.Value
        else:
           row['Midspread']= row.Newrate*row.Value

2 - Вы вызвали свою функцию и присвоили ее результату, но ваш Функция не имеет return.

3- Вы должны убедиться, что df_midspread['Date'] - это дата и время.

0 голосов
/ 06 февраля 2020

Спасибо за ваш совет, теперь это работает :) для строки в df_midspread ['Date']:

    if row<datetime.datetime.now():
       df_midspread['Midspread']= df_midspread.Oldrate*df_midspread.Value
    else:
       df_midspread['Midspread']= df_midspread.Newrate*df_midspread.Value  
0 голосов
/ 05 февраля 2020

Убедитесь, что db_midspread ['Date'] имеет правильный формат даты и времени. Ваш лог c правильный

, если не используется следующий код: Самый простой способ - использовать to_datetime:

db_midspread['Date'] = pd.to_datetime(db_midspread['Date'])```
...