J'ai une colonne pandas créée à partir d'une requête pd.read-sql. Il y a des dates nulles dans la colonne et elles sont retournées comme NoneTypes qui ressemble à ceci.Évaluez la colonne datetime.date avec NoneType
FFD
2014-10-29
2015-06-03
None
2017-05-05
print(type(stores['FFD'][0]))
class datetime.date
print(type(stores['FFD'][2]))
class'NoneType'
J'essaie ensuite d'exécuter la fonction suivante:
sixty = now - timedelta(60)
def f(row):
if row['FFD'] < sixty:
val = 'SR'
return val
stores['JRSR'] = stores.apply(f, axis = 1)
Cela renvoie une erreur:
TypeError: ("'<' not supported between instances of 'NoneType' and 'datetime.date'", 'occurred at index 10')
Je suis en mesure de convertir la colonne en chaîne, à des fins de comparaison, cependant J'ai besoin que ce champ reste comme champ de date pour les utilisations en aval. Mon code de conversion est:
stores['FFD'] = pd.to_datetime(stores['FFD'])
stores['FFD'] = stores['FFD'].dt.strftime("%Y-%m-%d")
Comment puis-je obtenir ma fonction de travailler sans convertir la colonne? Essentiellement, je veux que ma fonction évalue SEULEMENT les objets datetime.date. J'ai essayé:
def(f)row:
if isinstance(row['FFD'], NoneType):
val = ""
elif row['FFD'] < sixty:
val = 'SR'
Mais cela n'a pas fonctionné comme prévu.
Dans votre première fonction, changer 'if row ['FFD']
wow - comment simple. Juste en ajoutant le et de votre première suggestion a parfaitement fonctionné. Que fait si row ['FFD'] et ... faire? –
oh oui, et merci !!! –