如何将字符串转换为datetime而不使用days

8nuwlpux  于 2021-06-21  发布在  Mysql
关注(0)|答案(4)|浏览(331)

例如 issue_d Dataframe中的列是字符串, df['issue_d'] = 'Dec-2012' 我要将字符串转换为日期时间类型而不是字符串类型: 2012-12 ,怎么做?
我用

[datetime.strptime(x, '%b-%Y') for x in df.issue_d]

但我得到的结果是2012-12。
如何在没有天数的情况下得到结果,并使用mysql和sqlalchemy将其保存到数据库中?我在数据库中创建了一个datetime()类型的列。我想把df['issue\u d']插入那个表。
使用sqlalchemy创建的表

ukdjmx9f

ukdjmx9f1#

ex = pd.to_datetime('Dec-2012')
str(ex.year) + "-" + str(ex.month)

和一系列

series = pd.Series(["Dec-2012", "Nov-2013"])
series = pd.to_datetime(series)
series.apply(lambda x: str(x.year) + "-" + str(x.month))

你也可以使用

series.dt.to_period('M')

检查文档:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.to_datetime.html

yxyvkwin

yxyvkwin2#

datetime.datetime.strftime(datetime.datetime.strptime("DEC-2012", '%b-%Y'),'%Y-%m')
oo7oh9g9

oo7oh9g93#

months = {
        'Jan' : 1,
        'Feb' : 2,
        'Mar' : 3,
        'Apr' : 4,
        'May' : 5,
        'Jun' : 6,
        'Jul' : 7,
        'Aug' : 8,
        'Sep' : 9, 
        'Oct' : 10,
        'Nov' : 11,
        'Dec' : 12
}

temp = df['issue_d']
temp.split('-')
return temp[1] + '-' + str(months[temp[0]])

给定字符串'dec-2012',应该返回2012-12

qacovj5a

qacovj5a4#

iiuc,这里有一个方法:
从Dataframe开始 df :

>>> df
    issue_d
0  Dec-2012
1  Jan-2013

首先,转换为datetime,然后应用 strftime :

df['issue_d'] = pd.to_datetime(df['issue_d'])
df['issue_d'] = df['issue_d'].dt.date.apply(lambda x: x.strftime('%Y-%m'))

>>> df
   issue_d
0  2012-12
1  2013-01

请注意,它现在是日期的字符串表示形式,但是因为您需要格式化的日期,我认为它解决了您的问题。

相关问题