我有一個包含不同列的資料集。它看起來像這樣:
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]
這意味著如果在同一 DATE,每個 ID 至少有一個目的地是公共的,則條件滿足并且輸出為 TRUE。
我怎么能這樣做?到目前為止,我嘗試過:
for sublist in df["ID"]:
if (df["Destination_1"] == df["Destination_2"]).any():
print("True")
else :
print("False")
但這對我不起作用,我不知道如何添加有關 DATE 的第二個條件而不會出現錯誤。
有人可以幫我嗎?
uj5u.com熱心網友回復:
然后您可以嘗試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
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/474999.html
