Python 比较两个日期列并验证DateA是否早于DateB
我有两列日期(mm/dd/yy)。我需要验证DateColumn_A是否在DateColumn_B之前 我使用了下面的代码,得到了这个错误“TypeError:必须是字符串,而不是序列”。请帮助初学者 代码: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()中的行: 如
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])
其他:
通过
用一个例子详细阐述我的上述评论
首先,确保要比较的日期列实际上是日期。您可以使用pandasto_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