首页 > 解决方案 > 比较数据框中的两个日期时间列并返回一个标志

问题描述

我需要比较数据框中的两个日期时间列并创建一个返回 0/1 标志的新列。

数据框:

+-------------------+-------------------+
|       Date1       |       Date2       |
+-------------------+-------------------+
| 6-8-2020 13:27:01 | 6-8-2020 13:14:04 |
| 6-8-2020 5:01:02  | 7-8-2020 8:00:25  |
| 6-8-2020 7:45:43  | 6-8-2020 8:10:04  |
+-------------------+-------------------+

条件是:如果 date1 > date2 then 1 else 0

从上面的示例数据框想要的结果:

+------+
| Flag |
+------+
|    1 |
|    0 |
|    0 |
+------+

有人可以帮我弄这个吗?

标签: pythonpandasdataframe

解决方案


首先将值转换为日期时间,比较并将True, False值转换为1, 0by Series.astype

df.Date1 = pd.to_datetime(df.Date1, dayfirst=True)
df.Date2 = pd.to_datetime(df.Date2, dayfirst=True)
df['Flag'] = (df.Date1 > df.Date2).astype(int)
print (df)
                Date1               Date2  Flag
0 2020-08-06 13:27:01 2020-08-06 13:14:04     1
1 2020-08-06 05:01:02 2020-08-07 08:00:25     0
2 2020-08-06 07:45:43 2020-08-06 08:10:04     0

或用于比较Series.gt和用于1,0 Series.view

df['Flag'] = df.Date1.gt(df.Date2).view('i1')

推荐阅读