Python 将日期列转换为已用秒数
我有一个由多列组成的数据框架,其中一列是datetime64[ns]数据。时间是HH:MM:SS格式。如何将这列日期转换为一列经过的秒数?如果时间是10:00:00秒,那就是36000。秒应为float64类型格式 示例数据列 它会起作用:Python 将日期列转换为已用秒数,python,pandas,datetime,dataframe,Python,Pandas,Datetime,Dataframe,我有一个由多列组成的数据框架,其中一列是datetime64[ns]数据。时间是HH:MM:SS格式。如何将这列日期转换为一列经过的秒数?如果时间是10:00:00秒,那就是36000。秒应为float64类型格式 示例数据列 它会起作用: df['time'].dt.total_seconds() 关于新答案 将文本转换为Timedelta df['Origin Time(Local)'] = pd.to_timedelta(df['Origin Time(Local)']) df['Sec
df['time'].dt.total_seconds()
关于新答案
将文本转换为
Timedelta
df['Origin Time(Local)'] = pd.to_timedelta(df['Origin Time(Local)'])
df['Seconds'] = df['Origin Time(Local)'].dt.total_seconds()
旧答案 考虑数据帧
df
df = pd.DataFrame(dict(Date=pd.date_range('2017-03-01', '2017-03-02', freq='2H')))
Date
0 2017-03-01 00:00:00
1 2017-03-01 02:00:00
2 2017-03-01 04:00:00
3 2017-03-01 06:00:00
4 2017-03-01 08:00:00
5 2017-03-01 10:00:00
6 2017-03-01 12:00:00
7 2017-03-01 14:00:00
8 2017-03-01 16:00:00
9 2017-03-01 18:00:00
10 2017-03-01 20:00:00
11 2017-03-01 22:00:00
12 2017-03-02 00:00:00
从时间戳中减去最近的一天,然后使用
总秒数
total_seconds
是Timedelta
的一个属性。我们通过计算两系列时间戳之间的差值,得到一系列时间增量
(df.Date - df.Date.dt.floor('D')).dt.total_seconds()
# equivalent to
# (df.Date - pd.to_datetime(df.Date.dt.date)).dt.total_seconds()
0 0.0
1 7200.0
2 14400.0
3 21600.0
4 28800.0
5 36000.0
6 43200.0
7 50400.0
8 57600.0
9 64800.0
10 72000.0
11 79200.0
12 0.0
Name: Date, dtype: float64
把它放在一个新的专栏里
df.assign(seconds=(df.Date - df.Date.dt.floor('D')).dt.total_seconds())
Date seconds
0 2017-03-01 00:00:00 0.0
1 2017-03-01 02:00:00 7200.0
2 2017-03-01 04:00:00 14400.0
3 2017-03-01 06:00:00 21600.0
4 2017-03-01 08:00:00 28800.0
5 2017-03-01 10:00:00 36000.0
6 2017-03-01 12:00:00 43200.0
7 2017-03-01 14:00:00 50400.0
8 2017-03-01 16:00:00 57600.0
9 2017-03-01 18:00:00 64800.0
10 2017-03-01 20:00:00 72000.0
11 2017-03-01 22:00:00 79200.0
12 2017-03-02 00:00:00 0.0
我正在从datetime import datetime以
的形式导入datetime模块。
我得到的“DatetimeProperties”对象没有属性“total_seconds”错误。如何解决此问题?请尝试:df['time']=pd.to_datetime(df['time'])@FdMon我遇到了与Fanylion相同的错误,仍然无法使用pd.to_datetime()解决此问题。如果我的某些日期列具有object属性,该怎么办?导入时,我的某些文件有一个对象数据类型而不是日期时间类型,即使它的时间格式相同。@Fanylion然后使用df.Date=pd.to_datetime(df.Date)
Hmm预处理。当我这样做时,我得到的数据不能转换为日期时间。可能是因为我导入模块的方式(从datetime导入datetime)。我认为您的数据与您所说的不同。我不会花更多的时间猜测你的数据,因为你可以很容易地编辑你的文章并向我显示数据。我添加了我的数据图片。整个专栏很长,所以我不能全部发表。该列的类型为pandas.core.series.series,每个元素都是datetime.time类型。