【问题标题】:Calculate travel time in pandas计算熊猫的旅行时间
【发布时间】:2019-11-14 18:06:50
【问题描述】:

我是python的初学者。 我有一个巨大的dataframe。数据如下所示:

df
ID  Annotation  Time
A   Boarding    7:20:00
A   Alighting   8:30:50
B   Boarding    13:45:00
B   Alighting   14:00:05
C   Boarding    17:05:00
C   Alighting   17:15:00

我想计算每个 ID 上下车之间的旅行时间。我的预期结果如下所示: 结果

ID  Time Boarding   Time Alighting  Travel Time (Minutes)
A   7:20:00         8:30:50         70.83
B   13:45:00        14:00:05        15.08
C   17:05:00        17:15:00        10.00

我需要建议。提前谢谢你。

【问题讨论】:

标签: python pandas


【解决方案1】:

确实是pivot的情况:

# change to datetime
df['Time'] = pd.to_datetime(df['Time'])

new_df = df.pivot(index='ID', columns='Annotation', values='Time')
s = (new_df['Alighting'] - new_df['Boarding'])
new_df['Travel Time'] = s.dt.seconds / 60

输出:

Annotation           Alighting            Boarding  Travel Time
ID                                                             
A          2019-07-04 08:30:50 2019-07-04 07:20:00    70.833333
B          2019-07-04 14:00:05 2019-07-04 13:45:00    15.083333
C          2019-07-04 17:15:00 2019-07-04 17:05:00    10.000000

【讨论】:

  • 感谢您的回答。我收到此错误消息unsupported operand type(s) for -: 'str' and 'str'
【解决方案2】:

没有枢轴的解决方案:

>>> df2 = pd.DataFrame({'Time %s' % i: pd.to_datetime(pd.Series(x.values.ravel()))
                      for i, x in df.iloc[:, 1:].set_index('Annotation').T.groupby(level=0, axis=1)})
>>> df2['ID'] = df['ID'].unique()
>>> df2['Travel Time (Minutes)'] = (df2['Time Alighting'] - df2['Time Boarding']).dt.seconds / 60
>>> df2 = df2[['ID', 'Time Boarding', 'Time Alighting', 'Travel Time (Minutes)']]
>>> df2
  ID       Time Boarding      Time Alighting  Travel Time (Minutes)
0  A 2019-07-04 07:20:00 2019-07-04 08:30:50              70.833333
1  B 2019-07-04 13:45:00 2019-07-04 14:00:05              15.083333
2  C 2019-07-04 17:05:00 2019-07-04 17:15:00              10.000000
>>> 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-18
    • 2013-06-23
    • 1970-01-01
    • 2017-12-31
    • 1970-01-01
    • 2016-07-01
    • 1970-01-01
    • 2016-01-20
    相关资源
    最近更新 更多