np где: не могу сравнить datetime.date с юникодом - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь сделать np.where в кадре данных и отделить дату от 2017 или более и ниже 2017 года. Мне нужно сравнить столбец «Creation_Date» (формат даты «% d /% m /% Y»") со значением" 01/01/2017 ". Я продолжаю получать ту же ошибку: can't compare datetime.date to unicode

Я преобразовал столбец «Creation_Date» в формат даты, используя функцию strftime. Затем я преобразовал значение «01/01/2017» в формат даты, чтобы сравнить его со значениями в столбце «Creation_Date».

Вот фактический код:

my_df['temp_date'] = pd.to_datetime(my_df['Creation_Date'], dayfirst=True).dt.strftime('%Y-%m-%d')

t1 = my_df['temp_date'] >= dt.date(2017, 1, 1)

my_df['Final_Date'] = np.where(t1,'2017 or more','Below 2017')

Также попробовал:

my_df['temp_date'] = pd.to_datetime(my_df['Creation_Date'], dayfirst=True).dt.strftime('%Y-%m-%d')

t1 = my_df['temp_date'] >= dt.datetime.strptime('01/01/2017','%d/%m/%Y')

my_df['Final_Date'] = np.where(t1,'2017 or more','Below 2017')

Мне все еще не удается найти правильный формат между этими сравнениями: не могу сравнить datetime.date с unicode. Мне нужно получить столбец Final_Date, который отличает Creation_Date от 2017 или более и ниже 2017 года.

Не могли бы вы мне помочь, пожалуйста?

С уважением.

1 Ответ

2 голосов
/ 07 ноября 2019

Исходя из вашего кода,

my_df['temp_date'] = pd.to_datetime(my_df['Creation_Date'], dayfirst=True).dt.strftime('%Y-%m-%d')

, тогда my_df['temp_date'] - строки, поэтому вы не можете реально сравнить их с dt.date(2017, 1, 1) или dt.datetime.strptime('01/01/2017','%d/%m/%Y'), которые оба имеют тип datetime.

С другой стороны, pandas позволяет сравнивать тип pandas.Datetime и строку даты. Таким образом, вы можете избавиться от dt.strftime и вы можете сравнить:

my_df['temp_date']=pd.to_datetime(my_df['Creation_Date'], dayfirst=True)
my_df['temp_date'] >= '2017-01-01'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...