在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”: