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

Python 比较两个日期列并验证DateA是否早于DateB,python,Python,我有两列日期(mm/dd/yy)。我需要验证DateColumn_A是否在DateColumn_B之前 我使用了下面的代码,得到了这个错误“TypeError:必须是字符串,而不是序列”。请帮助初学者 代码: Column\u A=datetime.strtime(df['DateColumn\u A'],“%m%d%y”) Column_B=datetime.strtime(df['DateColumn_B'],“%m%d%y”) 对于索引,dataframe.iterrows()中的行: 如

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

我使用了下面的代码,得到了这个错误“TypeError:必须是字符串,而不是序列”。请帮助初学者

代码:

Column\u A=datetime.strtime(df['DateColumn\u A'],“%m%d%y”)
Column_B=datetime.strtime(df['DateColumn_B'],“%m%d%y”)
对于索引,dataframe.iterrows()中的行:
如果行[列A]<行[列B]
打印(索引,行[列A])
其他:
通过

用一个例子详细阐述我的上述评论

首先,确保要比较的日期列实际上是日期。您可以使用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.loc[df['DateColumnA']
类似于说“给我这个条件为真的数据帧的子集”

>>df
DateColumnA日期栏B
0  2018-01-01  2018-02-01
1  2018-05-01  2018-01-01
>>>df['DateColumnA']>>df.loc[df['DateColumnA']
您报告的错误发生在第一行代码中,因为strtime只能转换单个日期,而不能转换整个系列。请尝试以下方法:

df['DateColumn_A'] = pd.to_datetime(df['DateColumn_A'])
df['DateColumn_B'] = pd.to_datetime(df['DateColumn_B'])
print (df.index[df.DateColumn_A < df.DateColumn_B])
df['DateColumn\u A']=pd.to\u datetime(df['DateColumn\u A']))
df['DateColumn_B']=pd.to_datetime(df['DateColumn_B']))
打印(df.index[df.DateColumn\u A
您可以这样比较它们:

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

如果您正在比较的列是
datetime64
,那么
df['DateColumn\u A']
?@Orenshi我会尝试您的建议。谢谢你花时间回答我的问题!谢谢你让我知道为什么我的代码不起作用。我将与一系列的日期和你的解释是非常感谢工作!我对此进行了升级,但请小心将参数作为errors='ignore'传递,因为这可能会导致下一步出现错误。
df['DateColumn_A'] = pd.to_datetime(df['DateColumn_A'])
df['DateColumn_B'] = pd.to_datetime(df['DateColumn_B'])
print (df.index[df.DateColumn_A < df.DateColumn_B])
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