我有一个日期为字符串格式的数据框。我将这些日期转换为时间戳,以便我可以在代码的后半部分使用此日期列。计算/比较等一切都很好,但我希望时间戳以%d。%m。%Y格式出现,而不是默认%Y-%m-%d。让我来说明一下 -
dt=pd.DataFrame({'date':['09.12.1998','07.04.2014']},index=[1,2])
dt
Out[4]:
date
1 09.12.1998
2 07.04.2014
dt['date_1']=pd.to_datetime(dt['date'],format='%d.%m.%Y')
dt
Out[7]:
date date_1
1 09.12.1998 1998-12-09
2 07.04.2014 2014-04-07
我希望dt['date_1']
以与dt['date']
相同的格式显示。我不希望使用.strftime()
函数,因为它会将数据类型从timestamp转换为string。
在Nutshell中:如何调用python系统以我选择的格式显示时间戳(月份可能像APR,MAY等),而不是获取默认格式(如1998) -12-09),请记住数据类型仍然是时间戳,而不是字符串?
答案 0 :(得分:2)
看来Pandas还没有实现这个选项: https://github.com/pandas-dev/pandas/issues/11501
答案 1 :(得分:0)
看一下https://pandas.pydata.org/pandas-docs/stable/options.html看起来你可以设置显示来实现其中一些,尽管不是全部。
display.date_dayfirst
当为True时,首先打印并解析日期,例如20/01/2005
display.date_yearfirst
如果为True,则首先打印和分析年份,例如2005/01/20
所以你可以享受一天,但他们几个月都没有包括名字。
在更基础的层面上,每当你显示某些东西时,它就是一个字符串,对吧?我不确定为什么在您不必更改原始数据框时显示它就无法转换它。
您的代码将是:
pd.set_option("display.date_dayfirst", True)
除了实际上这不起作用:
https://github.com/pandas-dev/pandas/issues/11501
已经实现了解析选项,但没有用于显示。
答案 2 :(得分:0)
Hallo Stael / Cezar / Droravr,谢谢大家提供的意见。我珍惜你的时间,非常感谢你的帮助。感谢您分享此链接https://github.com/pandas-dev/pandas/issues/11501。我通过链接了解到这个问题最终可以分解为“显示问题”,正如jreback所阐述的那样。将日期显示为所需格式的此问题已标记为增强功能,因此可能会添加到将来的版本中。
我想要的只是将日期导出为dd-mm-yyy
并且只是在导出时格式化字符串,我们可以解决这个问题。
所以,我通过将文件导出为 -
dt.to_csv(filename, date_format='%d-%m-%Y',index=False)
。
date date_1
09.12.1998 09-12-1998
07.04.2014 07-04-2014
因此,这个问题已经解决了。
再次感谢大家的帮助以及您在这个问题上花费的宝贵时间。非常感谢。