numpy 比较按行排列的日期并将值替换为1或0

6za6bjd0  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(130)

我有一列要与其他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
5n0oy7gb

5n0oy7gb1#

你能试试这个吗:

df=df.set_index('UTIL_DATE')
df=df.ge(df.index, axis=0)
df=df.replace({True:1,False:0})

相关问题