Pandas转换日期时间表示

时间:2016-11-11 22:40:17

标签: python datetime pandas

我在下面的表示中得到了一个带有日期列的Dataframe作为datetime64 [ns]类型:

2016年1月31日为:2016-01-31

我想要的是这样的表示:

2016年1月31日:2016年1月31日

2016年12月31日:2016年12月31日

重要的是,在10月之前的所有月份,必须放弃开头的0,即截至9月份的月份只有一位数。

1 个答案:

答案 0 :(得分:1)

如果dtype已经是日期时间,您可以使用dt.strftime为您提供字符串表示来交换日期订单:

In [3]:
df = pd.DataFrame({'date':['2016-01-31', '2016-12-31']})
df['date'] = pd.to_datetime(df['date'])
df

Out[3]:
        date
0 2016-01-31
1 2016-12-31

In [4]:
df['strftime'] = df['date'].dt.strftime('%m/%d/%Y')
df

Out[4]:
        date    strftime
0 2016-01-31  01/31/2016
1 2016-12-31  12/31/2016

但是,由于您不想在日期和月份中使用前导零,因此您只需访问日期时间的各个日,月,年组件并将其转换为str并自行添加分隔符:

In [5]:
df['custom'] = df['date'].dt.month.astype(str) + '/' + df['date'].dt.day.astype(str) + '/' + df['date'].dt.year.astype(str)
df

Out[5]:
        date    strftime      custom
0 2016-01-31  01/31/2016   1/31/2016
1 2016-12-31  12/31/2016  12/31/2016

但是,我建议不要这样,日期时间dtype允许更容易的过滤和算术运算,当dtype是str时这不容易,所以列失去了它的实用性IMO