比较两个日期列并验证 DateA 是否早于 DateB

新手上路,请多包涵

我有两列日期 (mm/dd/yy)。我需要验证 DateColumn_A 是否在 DateColumn_B 之前。

我使用了以下代码并收到此错误“TypeError:必须是字符串,而不是系列”。请帮助初学者。

代码:

 Column_A = datetime.strptime(df['DateColumn_A'], '%m %d %y')
Column_B = datetime.strptime(df['DateColumn_B'], '%m %d %y')

for index, row in dataframe.iterrows():
    if row[Column_A] < row[Column_B]
        print (index,row[Column_A])
    else:
        pass

原文由 user9264558 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 443
2 个回答

你可以这样比较它们:

 from datetime import datetime

Column_A = datetime.strptime(df['DateColumn_A'], '%m %d %y').date()
Column_B = datetime.strptime(df['DateColumn_B'], '%m %d %y').date()
diff = Column_A - Column_B
if diff > 0:
    # Column_A is greater than Column_B
else:
    # Column_B is greater than Column_A

原文由 Coder the Great 发布,翻译遵循 CC BY-SA 3.0 许可协议

用一个例子详细说明我上面的评论。

首先确保您要比较的日期列实际上是日期。您可以使用 pandas to_datetime 函数来做到这一点,如下所示:

 >>> df = df.apply(pd.to_datetime, errors='ignore')
>>> df.DateColumnA
0   2018-01-01
1   2018-05-01
Name: DateColumnA, dtype: datetime64[ns]

下面的代码片段使用布尔索引。所以 df['DateColumnA'] < df['DateColumnB'] 返回一系列真假。然后 df.loc[df['DateColumnA'] < df['DateColumnB']] 类似于说“给我这个条件为真的 DataFrame 的子集”

  >>> df
  DateColumnA DateColumnB
0  2018-01-01  2018-02-01
1  2018-05-01  2018-01-01
>>> df['DateColumnA'] < df['DateColumnB']
0     True
1    False
dtype: bool
>>> df.loc[df['DateColumnA'] < df['DateColumnB']]
  DateColumnA DateColumnB
0  2018-01-01  2018-02-01

原文由 Orenshi 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题