Sunday, September 29, 2019

Convert Timestamp to str value python pandas dataframe

Answer


I have dataframe
which looks like this



    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


I want to change every date value to str if they match the condition



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'




I get this error any suggestions,
Kindly

No comments:

Post a Comment

hard drive - Leaving bad sectors in unformatted partition?

Laptop was acting really weird, and copy and seek times were really slow, so I decided to scan the hard drive surface. I have a couple hundr...