Проблемы, связанные с lambda для подачи заявки на панды DataFrame
Я пытаюсь применить функцию ко всем строкам pandas DataFrame (фактически только один столбец в этом DataFrame)
Я уверен, что это синтаксическая ошибка, но я знаю, что я делаю неправильно
df['col'].apply(lambda x, y:(x - y).total_seconds(), args=[d1], axis=1)
Столбец col
содержит кучу объектов datetime.datetime
а d1
- самый ранний из них. Я пытаюсь получить столбец из общего количества секунд для каждой из строк
EDIT Я продолжаю получать следующую ошибку
TypeError: <lambda>() got an unexpected keyword argument 'axis'
Я не понимаю, почему axis
переходит к моей lambda
функции
EDIT 2
Я также пытался сделать
def diff_dates(d1, d2):
return (d1-d2).total_seconds()
df['col'].apply(diff_dates, args=[d1], axis=1)
И я получаю ту же ошибку
Ответы
Ответ 1
Ну нет никакого параметра axis
для серии: 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
Есть один для df, но неясно, как вы ожидаете, что это сработает, когда вы вызываете его в серии, но вы ожидаете, что он будет работать в строке?