我有一个日期列(称为“时间”),其中包含天/小时/分钟等(时间差)。我在数据框中创建了一个新列,我想要创建一个将“时间”列转换为秒的新列。
我找到了如何转换列的方法。如何从现有的时间差列的秒转换中创建一个新列?
我找到了如何转换列的方法。如何从现有的时间差列的秒转换中创建一个新列?
我认为你需要使用total_seconds
函数:
print (df['col'].dt.total_seconds())
示例:
df = pd.DataFrame({'date1':pd.date_range('2015-01-01', periods=3),
'date2':pd.date_range('2015-01-01 02:00:00', periods=3, freq='23H')})
print (df)
date1 date2
0 2015-01-01 2015-01-01 02:00:00
1 2015-01-02 2015-01-02 01:00:00
2 2015-01-03 2015-01-03 00:00:00
df['diff'] = df['date2'] - df['date1']
df['seconds'] = df['diff'].dt.total_seconds()
print (df)
date1 date2 diff seconds
0 2015-01-01 2015-01-01 02:00:00 02:00:00 7200.0
1 2015-01-02 2015-01-02 01:00:00 01:00:00 3600.0
2 2015-01-03 2015-01-03 00:00:00 00:00:00 0.0
df['diff'] = df['date2'] - df['date1']
df['diff'] = df['diff'].dt.total_seconds()
print (df)
date1 date2 diff
0 2015-01-01 2015-01-01 02:00:00 7200.0
1 2015-01-02 2015-01-02 01:00:00 3600.0
2 2015-01-03 2015-01-03 00:00:00 0.0
如果需要转换为 int
:
df['diff'] = df['date2'] - df['date1']
df['diff'] = df['diff'].dt.total_seconds().astype(int)
print (df)
date1 date2 diff
0 2015-01-01 2015-01-01 02:00:00 7200
1 2015-01-02 2015-01-02 01:00:00 3600
2 2015-01-03 2015-01-03 00:00:00 0
df
。如果你想创建一个新的列,其中包含秒数,你需要执行以下操作:df['newColumn'] = df['Time'].dt.total_seconds()
total_seconds
函数与已填入timedelta的时间差列一起使用,而不是像df['date1'].dt.total_seconds()
那样用于datetime列。 - jezrael