在没有循环的情况下将日期时间序列转换为pandas中的字符串

Zak*_*Zak 3 python string datetime pandas

我有一个日期时间系列作为Pandas数据帧中的一列 - df ['timeStamp'].我想将此列中的每个日期时间对象转换为字符串.有几个python函数将单个日期时间对象转换为字符串,如:

str(datetime)
datetime.format(datetime) 
datetime.strftime('%m%d%Y')
Run Code Online (Sandbox Code Playgroud)

但是为了获得我想要的东西,我必须遍历整个列并将每个对象单独转换为字符串.我试图避免的东西.我想知道是否有任何Pandas/Python函数可以一次性完成.与to_datetime函数相反的东西(在没有循环的情况下将str转换为datetime).

jor*_*ris 5

你有一些选择.首先你可以这样做astype(str):

In [1]: s = pd.Series(pd.date_range('2015-01-01 09:00:00', periods=3))

In [2]: s
Out[2]:
0   2015-01-01 09:00:00
1   2015-01-02 09:00:00
2   2015-01-03 09:00:00
dtype: datetime64[ns]

In [3]: s.astype(str)
Out[3]:
0    2015-01-01T10:00:00.000000000+0100
1    2015-01-02T10:00:00.000000000+0100
2    2015-01-03T10:00:00.000000000+0100
dtype: object
Run Code Online (Sandbox Code Playgroud)

但这将为您提供字符串格式的日期时间的标准numpy表示.

您可以控制格式的另一个选项是strftime在apply中使用该方法(这实际上相当于编写循环,但更短):

In [4]: s.apply(lambda x: x.strftime('%m%d%Y'))
Out[4]:
0    01012015
1    01022015
2    01032015
dtype: object
Run Code Online (Sandbox Code Playgroud)

最后,在即将发布的0.17.0版本中(该功能目前处于开发版本中),您还可以执行以下操作:

In [5]: s.dt.strftime('%d/%m/%Y')
Out[5]:
0    01/01/2015
1    02/01/2015
2    03/01/2015
dtype: object
Run Code Online (Sandbox Code Playgroud)