【问题标题】:Calculate difference between two datetimes if both present in pandas DataFrame如果两个日期时间都存在于 pandas DataFrame 中,则计算两个日期时间之间的差异
【发布时间】:2014-08-01 19:29:36
【问题描述】:

我目前在pandas DataFrame中有各种时间列(DateTime格式),如下图:

Entry Time          Exit Time
00:30:59.555        06:30:59.555
00:56:43.200        
10:30:30.500        11:30:30.500

如果进入时间和退出时间都存在,我想在数据框中的新列中返回这些时间之间的差异(退出时间 - 进入时间)。否则,我想跳过该行,如下所示:

Entry Time          Exit Time          Time Difference
00:30:59.555        06:30:59.555       06:00:00.000
00:56:43.200        
10:30:30.500        12:00:30.500       01:30:00.000

我对 Python 还很陌生,所以如果这是一个明显的问题,我深表歉意。任何帮助将不胜感激!

【问题讨论】:

  • 你也可以投票;)

标签: python datetime pandas


【解决方案1】:

如果你的 dtypes 真的是日期时间,那么它真的很简单:

In [36]:

df['Difference Time'] = df['Exit Time'] - df['Entry Time']
df
Out[36]:
                  Entry Time                  Exit Time  Difference Time
0 2014-08-01 00:30:59.555000 2014-08-01 06:30:59.555000         06:00:00
1 2014-08-01 00:56:43.200000                        NaT              NaT
2 2014-08-01 10:30:30.500000 2014-08-01 11:30:30.500000         01:00:00

[3 rows x 3 columns]

如果不是,那么您需要使用 pd.to_datetime 转换它们,例如

df['Entry time'] = pd.to_datetime(df['Entry Time'])

编辑

您的数据似乎有些奇怪,我不太了解,但以下内容似乎对您有用:

df.dropna()['Exit_Time'] - df.dropna()['Entry_Time']

【讨论】:

  • Ed - 感谢您的回复。这让我很接近,但我仍然看到未填充退出时间的值。关于如何跳过这些行的任何想法?再次感谢!
  • @wrcobb 执行以下工作:df.dropna()['Exit_Time'] - df.dropna()['Entry_Time']?
猜你喜欢
  • 2023-02-02
  • 2021-11-25
  • 2011-08-01
  • 2016-10-01
  • 1970-01-01
  • 2012-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多