我在下面的表示中得到了一个带有日期列的Dataframe作为datetime64 [ns]类型:
2016年1月31日为:2016-01-31
我想要的是这样的表示:
2016年1月31日:2016年1月31日
2016年12月31日:2016年12月31日
重要的是,在10月之前的所有月份,必须放弃开头的0,即截至9月份的月份只有一位数。
答案 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