【问题标题】:Python Dataframe: Extract Date from Datetime field -- 'Not Callable' ErrorPython Dataframe:从日期时间字段中提取日期——“不可调用”错误
【发布时间】:2017-11-06 18:41:28
【问题描述】:

更新后续问题:

运行以下代码后收到错误:UnboundLocalError: local variable 'month_name' referenced before assignment

我有一个对象列,已成功转换为日期时间,名为“dtin”。下面是数据的样子:

我想创建一个新列,仅从 dtin 列中提取月份(参见屏幕截图)。

下面是我尝试过的代码和产生的错误:

非常感谢任何帮助。

【问题讨论】:

  • 我还想创建第三列来说明月份:即八月、十月、四月……我该怎么做?
  • dtin 是否已经格式化为日期?还是纯文本?
  • 已经格式化为日期
  • 好的,然后尝试在“月”结束时删除“()”
  • 哇!那行得通-谢谢! ...为什么你需要删除()?另外,我怎么才能说这个月的 3 个字母版本,即(8 是八月)

标签: python date datetime series callable


【解决方案1】:

根据我上面的评论,您需要像这样删除 ()。

df_EVENT4_6['start_month'] = df_EVENT4_6['dtin'].dt.month

这是因为“月”不是函数或方法,而是属性。 () 试图调用无法调用的东西。

您可以通过多种方式更改月份名称。我可能会定义一个函数并使用 apply 方法。

def month_change(mnum):
    if mnum == 1:
        mname='Jan'
    elif .....
    return(mname)      

 df_EVENT4_6['dtin']=df_EVENT4_6['dtin'].apply(month_change)

更新

我的错,你需要将它应用到其他系列。

def month_change(mnum):
    if mnum == 1:
        mname='Jan'
    elif .....
    return(mname)

 df_EVENT4_6['start_month'] = df_EVENT4_6['dtin'].dt.month

 df_EVENT4_6['start_month']=df_EVENT4_6['start_month'].apply(month_change)

【讨论】:

  • 我尝试了上述方法......但我收到一条错误消息“UnboundLocalError: local variable 'mname' referenced before assignment”
  • 更新了我原来的问题...请见上文(非常感谢您的关注)
  • 嗯好的。尝试添加 month=month.dt.month 作为您的 month_name_function 的第一行。可能行不通,但值得一试。否则,就像我在更新的答案中所做的那样进行更改。
  • 我更改了代码以反映您更新的答案...不幸的是仍然遇到同样的错误
猜你喜欢
  • 1970-01-01
  • 2019-01-27
  • 2020-12-19
  • 2016-09-30
  • 1970-01-01
  • 2016-07-27
  • 2020-08-14
  • 1970-01-01
  • 2021-09-26
相关资源
最近更新 更多