Python:根据不同的条件新建一列

Python: Create a new column based on different conditions

我有一个包含不同列的数据集。看起来像这样:

ID = [97,97,97,19,19,33,33,33,33,33,11] 
DATE = [2018-09,2018-09,2020-02,2021-01,2021-01,2017-04,2017-04,2017-04,2019-09,2019-09,2022-05] 
Destination_1 = [BRAZIL,BRAZIL,BRAZIL,ARGENTINA,MOROCCO,INDONESIA,USA,BRAZIL,EGYPT,LEBANON,USA] 
Destination_2 = [BRAZIL,URUGUAY,SINGAPORE,VENEZUELA,THAILAND,PERU,ECUADOR,USA,ALGERIA, EGYPT,CANADA] 

我想根据以下条件创建一个新列 OUTPUT:

对于每个 ID,如果在同一日期 DESTINATION_1 中至少有一个等于 DESTINATION_2,则输出应为 TRUE,否则为 FALSE。

OUTPUT 列所需的结果应为:

OUTPUT=[TRUE, TRUE, FALSE , FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE]

意味着如果在同一日期,每个 ID 至少有一个目的地是公共的,则满足条件并且输出为 TRUE。

我怎么能这样做?到目前为止我试过:

   for sublist in df["ID"]:
  if (df["Destination_1"] == df["Destination_2"]).any():
    print("True")
  else :
    print("False")

但这对我不起作用,我不知道如何在不出错的情况下添加与 DATE 有关的第二个条件。

有人可以帮我吗?

您可以尝试 groupby 并使用 isin 检查值是否存在,然后 assign

out = (df.groupby(['ID', 'DATE'])
       .apply(lambda g: g.assign(OUTPUT=[g['Destination_1'].isin(g['Destination_2']).any()]*len(g))))
print(out)

    ID     DATE Destination_1 Destination_2  OUTPUT
0   97  2018-09        BRAZIL        BRAZIL    True
1   97  2018-09        BRAZIL       URUGUAY    True
2   97  2020-02        BRAZIL     SINGAPORE   False
3   19  2021-01     ARGENTINA     VENEZUELA   False
4   19  2021-01       MOROCCO      THAILAND   False
5   33  2017-04     INDONESIA          PERU    True
6   33  2017-04           USA       ECUADOR    True
7   33  2017-04        BRAZIL           USA    True
8   33  2019-09         EGYPT       ALGERIA    True
9   33  2019-09       LEBANON         EGYPT    True
10  11  2022-05           USA        CANADA   False