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

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值