np其中:无法将datetime.date与unicode比较

时间:2019-11-07 14:30:20

标签: python pandas python-2.7 dataframe

我正在尝试在数据框中进行>>> fd = FlatDict( ... { ... 'person': { ... 'sexe': 'male', ... 'name': { ... 'first': 'jacques', ... 'last': 'dupond' ... } ... } ... } ... ) >>> fd {'person.sexe': 'male', 'person.name.first': 'jacques', 'person.name.last': 'dupond'} >>> fd['person'] = {'name': {'nickname': 'Bob'}} >>> fd {'person.sexe': 'male', 'person.name.first': 'jacques', 'person.name.last': 'dupond', 'person.name.nickname': 'Bob'} >>> fd['person.name'] = {'civility': 'Dr'} >>> fd {'person.sexe': 'male', 'person.name.first': 'jacques', 'person.name.last': 'dupond', 'person.name.nickname': 'Bob', 'person.name.civility': 'Dr'} 并将日期从2017年或更晚到2017年以下的日期分开。 我需要将列“ Creation_Date”(日期格式为“%d /%m /%Y”)与值“ 01/01/2017”进行比较。 我不断收到相同的错误,即:np.where

我已使用函数can't compare datetime.date to unicode将“ Creation_Date”列转换为日期格式。然后,我将值“ 01/01/2017”转换为日期格式,以将其与“ Creation_Date”列中的值进行比较。

这是实际的代码:

strftime

也尝试过:

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')

在这些比较之间,我仍然无法获得正确的格式:无法将datetime.date与unicode比较。 我需要获得一个Final_Date列,以将Creation_Date与2017年或2017年及以后的日期区分开来。

可以帮我吗?

最诚挚的问候。

1 个答案:

答案 0 :(得分:2)

从您的代码中,

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'