【问题标题】:convert MMM yyyy into yyyy-mm in python3在python3中将MMM yyyy转换为yyyy-mm
【发布时间】:2020-02-25 21:07:35
【问题描述】:

在python3中将MMM yyyy转换为yyyy-mm

所以对于带有 dd mmm yyyy 的 panda 日期框来说

01 Feb 1985

可以用下面的代码转换成yyyy-mm-dd

df[["date"]] = df[["date"]].apply(pd.to_datetime)

输出:

1985-02-01

但如果我有 MMM yyyy 喜欢

Feb 1985

我想输出为

1985-02

我该怎么做?

df[["date"]] = df[["date"]].apply(pd.to_datetime)

会输出我不想要的日期

1985-02-01 

有什么想法吗?

感谢一些 cmets。我刚刚意识到数据框中有我不能删除的 NaN。所以我试图做一个函数来引入 NaN,但结果仍然像 1985-02-01。有什么想法吗?

def date2int(df):

    for index, row in df.iteritems():

        try:
            t1=row.strftime('%b-%Y')
            return t1
        except ValueError:
            return None

date2int(df["date2"])

【问题讨论】:

  • 这里回答了类似的问题:stackoverflow.com/questions/25146121/…
  • 1985-02-01 是数据类型 (datetime) 的 pandas __repr__。您可以强制使用不同的格式,例如 df['date'].map('{:%Y-%m}'.format)
  • 我用上面的评论编辑了我的帖子。尝试 1 小时后仍无法解决。 @DOOM:您提供的解决方案会出现错误消息:AttributeError: 'NaTType' object has no attribute 'map'。 ``` def date2int(df): for index, row in df.iteritems(): print(row) if row is None: return None else: t1=row.map('{:%Y-%m}'.格式)打印(date2int(df[“date2”]))```

标签: python-3.x pandas date datetime


【解决方案1】:

经过一个半小时的努力后确定:

df['date2'] = df['date2'].loc[df['date2'].notnull()].apply(lambda x: x.strftime('%Y-%m'))

返回想要的输出,避免 NaN 抛出错误信息

1985-02

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-12
    • 2023-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多