如何将Month和Year放在Python Pandas的同一列中

时间:2017-04-04 18:22:44

标签: python pandas datetime

Column1   Month    Quantity Year
48         4         12.00  2006
49         5         13.00  2006
50         6         46.00  2006
51         7         11.00  2006
52         8         18.00  2006
53         9         16.00  2006
54        10         28.00  2006
83         1          6.00  2006

如何将月份列与年份列合并,并获取有意义的时间数据?

2 个答案:

答案 0 :(得分:10)

In [42]: df['Date'] = pd.to_datetime(df.assign(Day=1).loc[:, ['Year','Month','Day']])

In [43]: df
Out[43]:
   Column1  Month  Quantity  Year       Date
0       48      4      12.0  2006 2006-04-01
1       49      5      13.0  2006 2006-05-01
2       50      6      46.0  2006 2006-06-01
3       51      7      11.0  2006 2006-07-01
4       52      8      18.0  2006 2006-08-01
5       53      9      16.0  2006 2006-09-01
6       54     10      28.0  2006 2006-10-01
7       83      1       6.0  2006 2006-01-01

much nicer solution from @piRSquared

In [55]: df['Date'] = pd.to_datetime(df[['Year', 'Month']].assign(Day=1))

In [56]: df
Out[56]:
   Column1  Month  Quantity  Year       Date
0       48      4      12.0  2006 2006-04-01
1       49      5      13.0  2006 2006-05-01
2       50      6      46.0  2006 2006-06-01
3       51      7      11.0  2006 2006-07-01
4       52      8      18.0  2006 2006-08-01
5       53      9      16.0  2006 2006-09-01
6       54     10      28.0  2006 2006-10-01
7       83      1       6.0  2006 2006-01-01

答案 1 :(得分:7)

df['Date'] = pd.to_datetime(df.Year.astype(str) + '-' + df.Month.astype(str))
print(df)

    Column1  Month  Quantity  Year       Date
0       48      4      12.0  2006 2006-04-01
1       49      5      13.0  2006 2006-05-01
2       50      6      46.0  2006 2006-06-01
3       51      7      11.0  2006 2006-07-01
4       52      8      18.0  2006 2006-08-01
5       53      9      16.0  2006 2006-09-01
6       54     10      28.0  2006 2006-10-01
7       83      1       6.0  2006 2006-01-01