【问题标题】:np where : can't compare datetime.date to unicodenp where : 无法将 datetime.date 与 unicode 进行比较
【发布时间】:2019-11-07 14:30:20
【问题描述】:

我正在尝试在数据框中执行 np.where 并将日期从 2017 年或以上和 2017 年以下分开。 我需要将列“Creation_Date”(日期格式“%d/%m/%Y”)与值“01/01/2017”进行比较。 我不断收到同样的错误:can't compare datetime.date to unicode

我已使用函数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 年以下。

你能帮帮我吗?

最好的问候。

【问题讨论】:

    标签: python pandas python-2.7 dataframe


    【解决方案1】:

    根据您的代码,

    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'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-13
      • 2012-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多