我有一列要与其他100列进行比较。我需要比较的列都是DATETIME问题陈述如下:
1.如果“UTIL_DATE”中的日期大于等于其他列中的日期,则将该行的值替换为1
1.其他,0
我已经附上了一个示例图像下面的参考。
**例如:**由于UTIL_DATE“31-12-2021”大于“23-09-2021”,因此我们将列“第3列”中的行值更改为1。由于第1列、第2列(依此类推)中存在NaT,因此这些特定值无法与UTIL_DATE进行比较。因此,为0。
对所有其他行进行同样的迭代
当前x1c 0d1x
预期
我已经尝试了一个 try-except 循环。但是,它花费了超过1小时30分钟。我需要提高性能。
附加代码片段以供参考:
for idx, row in df.iterrows(): # row is each row in df and idx is the index for each row
for i in format_cols: # format_cols is the list of columns to be compared with the UTIL_DATE column
ifor_val = 0 # taking ifor_val as 0 by default
try:
if (pd.to_datetime(row["Util_Date"]) >= pd.to_datetime(row[i])):
ifor_val = 1 # if Util_Date >= column "i" date, then map it to 1. Else 0
except:
ifor_val = 0
df.loc[idx,i]=ifor_val
1条答案
按热度按时间5n0oy7gb1#
你能试试这个吗: