【发布时间】:2020-12-12 00:24:31
【问题描述】:
我有一个包含时间戳信息的“日期时间”列的熊猫数据框,我想从“日期时间”列中提取小时信息并将其添加到数据框的小时列中。
我很困惑,因为如果我编写没有大括号的 lambda 函数,我的代码就可以工作
df['Datetime'].apply(lambda x: x.hour)
但是,当我尝试使用此代码时
df['Datetime'].apply(lambda x: x.hour**()**)
我收到错误“TypeError: 'int' object is not callable”。
另一方面,当我使用带有 lambda 表达式的 split 函数时,它与大括号一起工作完全正常 -
df['Reasons'] = df['title'].apply(lambda x: x.split(':')[0])
【问题讨论】:
-
hour 是 int,不是函数,split 是函数
-
你应该使用
df['Datetime'].dt.hour。你不需要为所有事情做lambda x:。通常最好只使用没有它的 pandas 方法。分裂也一样。你应该这样做:df['title'].str.split(':').str[0])这是用 pandas 编写好的代码的基础,所以如果你能牢记这些技巧,你会受益匪浅。
标签: python-3.x pandas dataframe lambda