Python将列中的不同日期格式隐蔽

时间:2018-08-28 15:00:27

标签: python pandas datetime date-formatting

我正在尝试隐藏具有不同日期格式的列。

例如:

month
2018-01-01             float64
2018-02-01             float64
2018-03-01             float64
2018-03-01 00:00:00    float64
2018-04-01 01:00:00    float64
2018-05-01 01:00:00    float64
2018-06-01 01:00:00    float64
2018-07-01 01:00:00    float64

我想将列中的所有内容都转换为仅月份和年份。例如,我想要1月18日,2月18日,3月18日等。

我尝试使用此代码先将我的专栏隐瞒日期时间:

df['month'] =  pd.to_datetime(df['month'], format='%Y-%m-%d')

但是它返回一个float64:

month
2018-01-01 00:00:00    float64
2018-02-01 00:00:00    float64
2018-03-01 00:00:00    float64
2018-04-01 01:00:00    float64
2018-05-01 01:00:00    float64
2018-06-01 01:00:00    float64
2018-07-01 01:00:00    float64

在我的CSV输出中,月份格式已更改为01/05/2016 00:00:00。您能帮我隐蔽到仅仅一个月和一年吗,例如8月18日。

谢谢

1 个答案:

答案 0 :(得分:1)

我假设您有一个Pandas数据框。在这种情况下,您可以使用pd.Series.dt.to_period

Foo

如您所见,这会导致一系列dtype fooDAO.addFoo(name),通常效率不高。一个更好的主意是将日期设置为该月的最后一天,并维护内部由整数表示的s = pd.Series(['2018-01-01', '2018-02-01', '2018-03-01', '2018-03-01 00:00:00', '2018-04-01 01:00:00']) res = pd.to_datetime(s).dt.to_period('M') print(res) 0 2018-01 1 2018-02 2 2018-03 3 2018-03 4 2018-04 dtype: object 系列。