如何及时转换这些列

How to transform these columns in time

我正在对具有以下格式的日期列的数据集进行一些数据探索性分析:

0       2020-02-25 00:29:00
1       2020-02-24 23:50:00
2       2020-02-25 00:31:00
3       2020-02-25 02:03:00
4       2020-02-25 03:51:00

做减法 columnc = column A -column B,我得到:

0              0 days 00:51:00
1       0 days 01:05:12.207000
2       0 days 00:50:41.817000
3              0 days 00:23:00

例如,我想在几分钟内转换 C 列,但我找不到在转换中声明天数的方法。我找到了这个主题: 但它不包括天数,而且我没有相同的分隔符,是否有可能或者我必须以某种方式更改 A 列和 B 列?

一如既往的感谢,

这个社区对于正在进入主题的人非常有用。

您可以使用 dt.total_seconds() / 60:

>>> df.dt.total_seconds() / 60
0    51.00000
1    65.20345
2    50.69695
3    23.00000
dtype: float64
>>>

只要得到总秒数除以60就得到分钟数。

如果您不想要额外的小数点,请尝试:

>>> df.dt.total_seconds().astype(int) // 60
0    51
1    65
2    50
3    23
dtype: int32
>>> 

虽然我不确定你的确切日期格式(它是一个日期时间对象吗?它只是一个字符串吗?),假设它在这里是一个字符串,最初你想将它转换为一个日期时间对象:

datetime_object = datetime.strptime('2020-02-25 00:29:00', '%Y-%m-%d %H:%M:%S')

转换后,(或者如果你已经有一个 datetime 对象),你可以减去它们:

timedelta_object = datetime_object2-datetime_object1

最后,您可以将时间增量转换为分钟:

diff_minutes = timedelta_object.total_seconds()/60

编辑:在提交之前,我刚刚看到 U12-Forward 已经发布了一个包含大部分相同信息的答案,但我会保留我的答案,因为它包含更多细节。

假设您的数据框看起来像这样(我刚刚从 Col A 中减去 4 天)

             Column A            Column B
0 2020-02-25 00:29:00 2020-02-21 00:29:00
1 2020-02-24 23:50:00 2020-02-20 23:50:00
2 2020-02-25 00:31:00 2020-02-21 00:31:00
3 2020-02-25 02:03:00 2020-02-21 02:03:00
4 2020-02-25 03:51:00 2020-02-21 03:51:00

我们可以使用 numpy 将您的时间增量作为整数。

使用 np.timedelta64 并传递参数 1 m 其中 m = minute

import pandas as pd
import numpy as np

df['minute_delta'] = (df['Column A'] - df['Column B']) / np.timedelta64(1,'m')

             Column A            Column B  minute_delta
0 2020-02-25 00:29:00 2020-02-21 00:29:00        5760.0
1 2020-02-24 23:50:00 2020-02-20 23:50:00        5760.0
2 2020-02-25 00:31:00 2020-02-21 00:31:00        5760.0
3 2020-02-25 02:03:00 2020-02-21 02:03:00        5760.0
4 2020-02-25 03:51:00 2020-02-21 03:51:00        5760.0