繁体   English   中英

np where: 无法将 datetime.date 与 unicode 进行比较

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM