Pandas DF将日期字符串转换为日期年份和月份

时间:2020-05-11 03:12:51

标签: python pandas

大家好,我在数据框中有一个看起来像这样的列:

print(df['Date']):

29-Nov-16
4-Dec-16
1-Oct-16
30-Nov-19
30-Jun-20
28-Apr-16
24-May-16

我正在尝试获得看起来像这样的输出

print(df):
Date            Month          Year
29-Nov-16       Nov             2016
4-Dec-16       Dec             2016
1-Oct-16       Oct             2016
30-Nov-19       Nov             2019
30-Jun-20       Jun             2020
28-Apr-16       Apr             2016
24-May-16       May             2016

我尝试了以下操作:

df['Month'] = pd.datetime(df['Date']).month
df['Year'] = pd.datetime(df['Date']).year

但收到TypeError: cannot convert the series to <class 'int'>

有什么想法或参考可以帮助您吗? 谢谢!

2 个答案:

答案 0 :(得分:2)

使用strftimestr.split并将它们分配给新列

df_final = df.assign(**pd.to_datetime(df['Date']).dt.strftime('%b-%Y')
                                                 .str.split('-', expand=True)
                                                 .set_axis(['Month','Year'], axis=1))

Out[32]:
        Date Month  Year
0  29-Nov-16   Nov  2016
1   4-Dec-16   Dec  2016
2   1-Oct-16   Oct  2016
3  30-Nov-19   Nov  2019
4  30-Jun-20   Jun  2020
5  28-Apr-16   Apr  2016
6  24-May-16   May  2016

答案 1 :(得分:1)

dt之后您丢失了pd.datetime(df['Date'])

尝试一下:

df['Month'] = pd.datetime(df['Date']).dt.month
df['Year'] = pd.datetime(df['Date']).dt.year