如何从数据帧将String转换为Numpy Datetime64

时间:2019-05-15 15:01:46

标签: python pandas numpy matplotlib

我正在处理一个包含时间列的DataFrame,例如“ hh:mm:ss”,我需要将这些值转换为NumPy datetime64类型。

import pandas as pd
data = [dict(voie="V3", Start="06:10", End='06:20'),
            dict(voie="V5", Start='06:26', End='06:29'),
            dict(voie="V3", Start='06:20', End='06:30'),
            dict(voie="V5", Start='06:32', End='06:35')]
df = pd.DataFrame(data)
#df = df['Start'].to-datetime64()

我需要将列StartEnd从类型string转换为datetime64

1 个答案:

答案 0 :(得分:0)

每列只需使用pandas.to_datetime。例如:

df.End = pd.to_datetime(df.End)
df.End
0   2019-05-15 06:20:00
1   2019-05-15 06:29:00
2   2019-05-15 06:30:00
3   2019-05-15 06:35:00
Name: End, dtype: datetime64[ns]

您还可以使用DataFrame的pandas.DataFrame.astype方法。

df.End = df.End.astype('datetime64[ns]')
df.End
0   2019-05-15 06:20:00
1   2019-05-15 06:29:00
2   2019-05-15 06:30:00
3   2019-05-15 06:35:00
Name: End, dtype: datetime64[ns]

关于pd.Timestampnp.datetime64

那是一个复杂的关系。系列的.values属性将是类型np.datetime64的数组,而单个条目的类型将是pd.Timestamp。据我所知,np.datetime64pd.Timestamp无关。 Converting between datetime, Timestamp and datetime64中有一个漂亮的小图形可能会有所帮助。在pd.to_datetime代码的深处,您将看到,实际上,当传递pd.Series时,每个条目都会转换为np.datetime64。直到您访问系列中的一个项目,该项目才会转换为pd.Timestamp(请参阅pandas._libs.index.get_value_at)。