python匿名函数表达式_Python:在pandas lambda表达式中使用函数

在尝试从DataFrame的'日期'列中提取小时并将其存储为新列时,遇到了一个错误。问题在于定义的`find_hour`函数在调用时未被正确引用。解决方案是先定义函数,然后应用它。另外,`find_hour`函数接受两个参数,但实际上只需要一个。修正后的代码是先定义函数,然后使用lambda表达式调用它,只传递一个参数。
摘要由CSDN通过智能技术生成

我有以下代码,试图找到数据框中“日期”列的小时:

print(df['Dates'].head(3))

df['hour'] = df.apply(lambda x: find_hour(x['Dates']), axis=1)

def find_hour(self, input):

return input[11:13].astype(float)

print(df [‘Dates’].head(3))如下所示:

0 2015-05-13 23:53:00

1 2015-05-13 23:53:00

2 2015-05-13 23:33:00

但是,我收到以下错误:

df['hour'] = df.apply(lambda x: find_hour(x['Dates']), axis=1)

NameError: ("global name 'find_hour' is not defined", u'occurred at index 0')

有谁知道我错过了什么?谢谢!

请注意,如果我将函数直接放在lambda行中,如下所示,一切正常:

df['hour'] = df.apply(lambda x: x['Dates'][11:13], axis=1).astype(float)

解决方法:

您在尝试使用find_hour之前尝试使用它.你只需要切换一下:

def find_hour(self, input):

return input[11:13].astype(float)

print(df['Dates'].head(3))

df['hour'] = df.apply(lambda x: find_hour(x['Dates']), axis=1)

编辑:Padraic指出了一个非常重要的观点:find_hour()被定义为接受两个参数,self和input,但是你只给它一个.您应该将find_hour()定义为def find_hour(input):除了将参数定义为输入影响内置函数.您可以考虑将其重命名为更具描述性的内容.

标签:python,lambda,dataframe,pandas

来源: https://codeday.me/bug/20190717/1488215.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值