我有数据帧 它看起来像这样转换时间戳STR值蟒蛇大熊猫据帧
Date Player Fee
0 2017-01-08 Steven Berghuis 6500000
1 2017-07-18 Jerry St. Juste 4500000
2 2017-07-18 Ridgeciano Haps 600000
3 2017-01-07 Sofyan Amrabat 400000
我要改变每一个日期值str的,如果他们符合条件
def is_in_range(x):
ses1 = pd.to_datetime('2013-02-01')
ses2 = pd.to_datetime('2014-02-01')
ses3 = pd.to_datetime('2015-02-01')
ses4 = pd.to_datetime('2016-02-01')
ses5 = pd.to_datetime('2017-02-01')
ses6 = pd.to_datetime('2018-02-01')
if x < ses1 :
x = '2012-13'
if x > ses2 and x < ses3 :
x = '2013-14'
if x > ses3 and x < ses4 :
x = '2014-15'
if x > ses4 and x < ses5 :
x = '2015-16'
if x > ses5 and x < ses6 :
x = '2016-17'
return ses6
aj = ajax_t['Date'].apply(is_in_range)
aj
TypeError Traceback (most recent call last) in() 18 x = '2016-17' 19 return ses6 ---> 20 aj = ajax_t['Date'].apply(is_in_range) 21 aj
/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pandas/core/series.py in apply(self, func, convert_dtype, args, **kwds) 2353
else: 2354 values = self.asobject -> 2355 mapped = lib.map_infer(values, f, convert=convert_dtype) 2356 2357 if len(mapped) and isinstance(mapped[0], Series):pandas/_libs/src/inference.pyx in pandas._libs.lib.map_infer (pandas/_libs/lib.c:66645)()
in is_in_range(x) 15 if x > ses4 and x < ses5 : 16 x = '2015-16' ---> 17 if x > ses5 and x < ses6 : 18 x = '2016-17' 19 return ses6
pandas/_libs/tslib.pyx in pandas._libs.tslib._Timestamp.richcmp (pandas/_libs/tslib.c:20281)()
TypeError: Cannot compare type 'Timestamp' with type 'str'
我得到这个错误的任何建议, 请问
我想你'date'列可能不日期时间格式?我不知道,这取决于你的数据帧。如果是这样,你将不得不将这个'x'转换为datetime。 – JAW