日期时间到熊猫系列中的字符串
Posted
技术标签:
【中文标题】日期时间到熊猫系列中的字符串【英文标题】:datetime to string with series in pandas 【发布时间】:2015-07-19 20:50:46 【问题描述】:我需要做这个简单的事情:
dates = p.to_datetime(p.Series(['20010101', '20010331']), format = '%Y%m%d')
dates.str
但是我得到一个错误。我应该如何从datetime
转换为string
?
【问题讨论】:
【参考方案1】:日期时间没有str
访问器,您也不能使用dates.astype(str)
,您可以调用apply
并使用datetime.strftime
:
In [73]:
dates = pd.to_datetime(pd.Series(['20010101', '20010331']), format = '%Y%m%d')
dates.apply(lambda x: x.strftime('%Y-%m-%d'))
Out[73]:
0 2001-01-01
1 2001-03-31
dtype: object
您可以使用任何您喜欢的方式更改日期字符串的格式:strftime() and strptime() Behavior。
更新
从0.17.0
版本开始,您可以使用dt.strftime
执行此操作
dates.dt.strftime('%Y-%m-%d')
现在可以工作了
【讨论】:
谢谢@EdChum。但是现在我发现了另一个问题。如果a有NaT。?如何解决?dates = p.to_datetime(p.Series(['20010101', '20010331',None]), format = '%Y%m%d') dates.apply(lambda x: x.strftime('%Y-%m-%d'))
先删除它们是一种选择,所以dates.dropna().apply(lambda x: x.strftime('%Y-%m-%d'))
@EdChum 这仍然不会将日期转换为字符串。 type(dates.df.strftime(...))
说<class 'pandas.core.series.Series'>
。您需要添加.tolist()
。熊猫版本 0.25.3【参考方案2】:
有一个 pandas 函数可以应用于 pandas 数据框中的 DateTime 索引。
date = dataframe.index #date is the datetime index
date = dates.strftime('%Y-%m-%d') #this will return you a numpy array, element is string.
dstr = date.tolist() #this will make you numpy array into a list
列表内的元素:
u'1910-11-02'
您可能需要替换“u”。
可能有一些额外的参数我应该放入前面的函数中。
【讨论】:
【参考方案3】:从 17.0 版开始,您可以使用 dt
访问器进行格式化:
dates.dt.strftime('%Y-%m-%d')
Reference
【讨论】:
与在数据框.apply()
方法中的 lambda 函数内使用 datetime.strftime
相比,这将我的代码速度提高了 10 倍(如 @EdChum 所建议)以上是关于日期时间到熊猫系列中的字符串的主要内容,如果未能解决你的问题,请参考以下文章