[英]np where : can't compare datetime.date to unicode
我正在尝试在np.where
中执行 np.where 并将日期从 2017 年或以上并低于 2017 年开始。我需要将列“Creation_Date”(日期格式“%d/%m/%Y”)与值“2017 年 1 月 1 日”。 我不断收到相同的错误,即: can't compare datetime.date to unicode
我已使用 function strftime
将“Creation_Date”列转换为日期格式。 然后我将值 '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 年以下。
你能帮我吗?
此致。
从您的代码中,
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'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.