如何从 2 列数据框中获取以秒为单位的持续时间
How to get Duration in seconds from 2 columns dataframe
我有一个数据框 df 如下:
车站
开始时间
结束时间
A123
2021 年 5 月 26 日 05:00:00 下午
2021 年 5 月 26 日 05:10:00
A456
2021 年 5 月 26 日 05:00:00 下午
2021 年 5 月 26 日 05:01:00
StartTime和EndTime的数据类型是字符串。
我想创建另一个持续时间为 StartTime 到 EndTime 的列。
车站
开始时间
结束时间
时长
A123
2021 年 5 月 26 日 05:00:00 下午
2021 年 5 月 26 日 05:10:00 下午
600
A456
2021 年 5 月 26 日 05:00:00 下午
2021 年 5 月 26 日 05:01:00 下午
60
使用:
df['StartTime']=pd.to_datetime(df['StartTime'].str.rsplit(n=1).str[0])
df['EndTime']=pd.to_datetime(df['EndTime'])
df['Duration']=df.eval("EndTime-StartTime").dt.total_seconds()
df
的输出:
Station StartTime EndTime Duration
0 A123 2021-05-26 05:00:00 2021-05-26 05:10:00 600.0
1 A456 2021-05-26 05:00:00 2021-05-26 05:01:00 60.0
或
如果您想在 'StartTime'
中包含 'AM'
和 'PM'
,则:
df['StartTime']=pd.to_datetime(df['StartTime'])
df['EndTime']=pd.to_datetime(df['EndTime'])
df['Duration']=df.eval("EndTime-StartTime").dt.total_seconds()
df
的输出:
Station StartTime EndTime Duration
0 A123 2021-05-26 17:00:00 2021-05-26 05:10:00 -42600.0
1 A456 2021-05-26 17:00:00 2021-05-26 05:01:00 -43140.0
注:如果需要正值则链abs()
或
如果您不想更改类似日期的列的初始格式:
df['Duration']=(pd.to_datetime(df['StartTime'].str.replace('PM|AM',''))-pd.to_datetime(df['EndTime'])).dt.total_seconds()
import pandas as pd
a_dataframe = pd.DataFrame({"Station": ["A1", "A2"], "ST": ["26-MAY-2021 05:00:00 PM", "26-MAY-2021 05:00:00 PM"], "ET":["26-MAY-2021 05:10:00. PM","26-MAY-2021 05:01:00 PM"]})
print(pd.to_datetime(a_dataframe['ET']) -pd.to_datetime(a_dataframe['ST']))
a_dataframe.insert(3, "Duration",pd.to_datetime(a_dataframe['ET']) -pd.to_datetime(a_dataframe['ST']))
print(a_dataframe)
这是你想要的吗?
import pandas as pd
data = [['A123','26-MAY-2021 05:00:00 PM','26-MAY-2021 05:10:00 PM'], ['A456','26-MAY-2021 05:00:00 PM','26-MAY-2021 05:01:00 PM']]
df = pd.DataFrame(data, columns=['Station','StartTime','EndTime'])
df['StartTime'] =pd.to_datetime(df['StartTime'])
df['EndTime'] =pd.to_datetime(df['EndTime'])
df['Duration'] = df['EndTime'] - df['StartTime']
我有一个数据框 df 如下:
车站 | 开始时间 | 结束时间 |
---|---|---|
A123 | 2021 年 5 月 26 日 05:00:00 下午 | 2021 年 5 月 26 日 05:10:00 |
A456 | 2021 年 5 月 26 日 05:00:00 下午 | 2021 年 5 月 26 日 05:01:00 |
StartTime和EndTime的数据类型是字符串。 我想创建另一个持续时间为 StartTime 到 EndTime 的列。
车站 | 开始时间 | 结束时间 | 时长 |
---|---|---|---|
A123 | 2021 年 5 月 26 日 05:00:00 下午 | 2021 年 5 月 26 日 05:10:00 下午 | 600 |
A456 | 2021 年 5 月 26 日 05:00:00 下午 | 2021 年 5 月 26 日 05:01:00 下午 | 60 |
使用:
df['StartTime']=pd.to_datetime(df['StartTime'].str.rsplit(n=1).str[0])
df['EndTime']=pd.to_datetime(df['EndTime'])
df['Duration']=df.eval("EndTime-StartTime").dt.total_seconds()
df
的输出:
Station StartTime EndTime Duration
0 A123 2021-05-26 05:00:00 2021-05-26 05:10:00 600.0
1 A456 2021-05-26 05:00:00 2021-05-26 05:01:00 60.0
或
如果您想在 'StartTime'
中包含 'AM'
和 'PM'
,则:
df['StartTime']=pd.to_datetime(df['StartTime'])
df['EndTime']=pd.to_datetime(df['EndTime'])
df['Duration']=df.eval("EndTime-StartTime").dt.total_seconds()
df
的输出:
Station StartTime EndTime Duration
0 A123 2021-05-26 17:00:00 2021-05-26 05:10:00 -42600.0
1 A456 2021-05-26 17:00:00 2021-05-26 05:01:00 -43140.0
注:如果需要正值则链abs()
或
如果您不想更改类似日期的列的初始格式:
df['Duration']=(pd.to_datetime(df['StartTime'].str.replace('PM|AM',''))-pd.to_datetime(df['EndTime'])).dt.total_seconds()
import pandas as pd
a_dataframe = pd.DataFrame({"Station": ["A1", "A2"], "ST": ["26-MAY-2021 05:00:00 PM", "26-MAY-2021 05:00:00 PM"], "ET":["26-MAY-2021 05:10:00. PM","26-MAY-2021 05:01:00 PM"]})
print(pd.to_datetime(a_dataframe['ET']) -pd.to_datetime(a_dataframe['ST']))
a_dataframe.insert(3, "Duration",pd.to_datetime(a_dataframe['ET']) -pd.to_datetime(a_dataframe['ST']))
print(a_dataframe)
这是你想要的吗?
import pandas as pd
data = [['A123','26-MAY-2021 05:00:00 PM','26-MAY-2021 05:10:00 PM'], ['A456','26-MAY-2021 05:00:00 PM','26-MAY-2021 05:01:00 PM']]
df = pd.DataFrame(data, columns=['Station','StartTime','EndTime'])
df['StartTime'] =pd.to_datetime(df['StartTime'])
df['EndTime'] =pd.to_datetime(df['EndTime'])
df['Duration'] = df['EndTime'] - df['StartTime']