在Python中将函数应用于Datetime字段

在Python中将函数应用于Datetime字段,python,pandas,function,datetime,Python,Pandas,Function,Datetime,我想使用一个函数在我的表中创建一个字段,该函数将日期时间字段与名为data['RegisterDate'] 我写了一个这样的函数: def OldNew(DateTime): if DateTime> '2019-09-04 00:00:00': return 'New' else: return 'Old' OldNew('2019-09-05 00:00:00') 并给出了正确的结果 数据['RegisterDate']的格式与'20

我想使用一个函数在我的表中创建一个字段,该函数将日期时间字段与名为
data['RegisterDate']

我写了一个这样的函数:

def OldNew(DateTime):
    if DateTime> '2019-09-04 00:00:00':
        return 'New'
    else:
        return 'Old'

OldNew('2019-09-05 00:00:00')
并给出了正确的结果

数据['RegisterDate']
的格式与
'2019-09-04 00:00:00'的格式相同

但是,当我尝试
data['NewColumn]=data['RegisterDate'].apply(OldNew)

它给出以下错误消息

无法比较类型“Timestamp”和类型“str”

我尝试将datetime列转换为字符串,但失败


然后我又试图实现某种解码,但我找不到方法。

使用
pd.to\u datetime

Ex:

def OldNew(DateTime):
    if DateTime > pd.to_datetime('2019-09-04 00:00:00'):
        return 'New'
    else:
        return 'Old'

您还可以使用
np.where
而不是
。应用
以提高效率

Ex:

data = pd.DataFrame({'RegisterDate': ['2019-09-03 00:00:00', '2019-09-05 00:00:00']})
data["RegisterDate"] = pd.to_datetime(data["RegisterDate"])
data['NewColumn'] = np.where(data["RegisterDate"] > pd.to_datetime('2019-09-04 00:00:00'), 'New', 'Old')
print(data)
  RegisterDate NewColumn
0   2019-09-03       Old
1   2019-09-05       New
输出:

data = pd.DataFrame({'RegisterDate': ['2019-09-03 00:00:00', '2019-09-05 00:00:00']})
data["RegisterDate"] = pd.to_datetime(data["RegisterDate"])
data['NewColumn'] = np.where(data["RegisterDate"] > pd.to_datetime('2019-09-04 00:00:00'), 'New', 'Old')
print(data)
  RegisterDate NewColumn
0   2019-09-03       Old
1   2019-09-05       New
尝试
str(date.strftime(“%Y-%m-%d”)
然后进行比较。

如果DateTime.strftime(“%Y-%m-%d%H:%m-%S”)>“2019-09-04 00:00:00”: