麻烦传递lambda申请pandas DataFrame

时间:2015-03-19 21:25:35

标签: python pandas lambda dataframe

我正在尝试将函数应用于pandas DataFrame的所有行(实际上只是该DataFrame中的一列)

我确定这是一个语法错误,但我知道我做错了什么

df['col'].apply(lambda x, y:(x - y).total_seconds(), args=[d1], axis=1)

col列包含一堆datetime.datetime个对象,d1是最早的对象。我正在尝试获取每行

的总秒数列

编辑我一直收到以下错误

TypeError: <lambda>() got an unexpected keyword argument 'axis'

我不明白为什么axis传递给我的lambda函数

编辑2

我也尝试过做

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

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

我得到同样的错误

1 个答案:

答案 0 :(得分:26)

系列没有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还有一个,但是当你在一个系列中调用它但你期望它能连续工作时,你不清楚你期望它是如何工作的?