我正在处理一个包含时间列的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()
我需要将列Start
和End
从类型string
转换为datetime64
答案 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.Timestamp
和np.datetime64
那是一个复杂的关系。系列的.values
属性将是类型np.datetime64
的数组,而单个条目的类型将是pd.Timestamp
。据我所知,np.datetime64
与pd.Timestamp
无关。 Converting between datetime, Timestamp and datetime64中有一个漂亮的小图形可能会有所帮助。在pd.to_datetime
代码的深处,您将看到,实际上,当传递pd.Series
时,每个条目都会转换为np.datetime64
。直到您访问系列中的一个项目,该项目才会转换为pd.Timestamp
(请参阅pandas._libs.index.get_value_at)。