J'essaie d'appliquer une fonction à toutes les lignes d'un pandas DataFrame (en fait juste une colonne dans ce DataFrame)
Je suis sûr que c'est une erreur de syntaxe mais je suis sûr de ce que je fais mal
df['col'].apply(lambda x, y:(x - y).total_seconds(), args=[d1], axis=1)
La colonne col
contient un groupe a datetime.datetime
objets et et d1
est le plus ancien d'entre eux. J'essaie d'obtenir une colonne du nombre total de secondes pour chacune des lignes
MODIFIER Je reçois toujours l'erreur suivante
TypeError: <lambda>() got an unexpected keyword argument 'axis'
Je ne comprends pas pourquoi axis
est passé à ma fonction lambda
MODIFIER 2
J'ai aussi essayé de faire
def diff_dates(d1, d2):
return (d1-d2).total_seconds()
df['col'].apply(diff_dates, args=[d1], axis=1)
Et je reçois la même erreur
Eh bien, il n'y a pas de paramètre axis
pour une série: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.apply.html#pandas.Series.apply
Series.apply (func, convert_dtype = True, args = (), ** kwds)
func : function
convert_dtype : boolean, default True
Try to find better dtype for elementwise function results. If False, leave as dtype=object
args : Tuple
Positional arguments to pass to function in addition to the value
Il y en a un pour un df mais on ne sait pas comment vous vous attendez à ce que cela fonctionne lorsque vous l'appelez sur une série, mais vous vous attendez à ce qu'il fonctionne sur une ligne?