web-dev-qa-db-ja.com

pandas DataFrameに適用するためにラムダを渡す際の問題

pandas DataFrame(実際にはそのDataFrameの1列のみ)のすべての行に関数を適用しようとしています

私はこれが構文エラーだと確信していますが、私が間違っていることは確かです

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'

axislambda関数に渡される理由がわかりません

編集2

私もやってみました

def diff_dates(d1, d2):
    return (d1-d2).total_seconds()

df['col'].apply(diff_dates, args=[d1], axis=1)

そして、私は同じエラーを受け取ります

24
sedavidw

シリーズには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 の1つがありますが、シリーズで呼び出すときにこれがどのように動作することを期待しているのか不明ですが、行で動作することを期待していますか?

30
EdChum