我有一個像這樣的資料框:
J1 J2 J3 J4
0 551 5 552 553
1 551 554 2 5
2 2 554 555 556
3 7 6 557 558
4 559 9 560 561
目標是確定哪些行相互連接。例如:第 0、1 和 2 行具有將其連接到下一個的匹配值(第 0 行和第 1 行中的 551,以及第 1 行和第 2 行中的 554)。一旦確定,我需要將這些行隔離到它自己單獨的資料塊中。它應該適用于資料框中的任何行,不一定只適用于下一行。我無法弄清楚如何做到這一點。有任何想法嗎?
uj5u.com熱心網友回復:
由于您的資料集很小,您可以使用 numpy 廣播來執行所有比較:
下面的代碼為您提供了連接行的數量(我為示例添加了一個額外的連接行):
a = df.values
b = (a==a[:,None]).sum(2)
np.fill_diagonal(b, 0)
df['connected'] = b.sum(0)
輸出:
0 1 2 3 connected
0 551 5 552 553 1
1 551 554 2 5 3
2 2 554 555 556 1
3 7 6 557 558 0
4 559 9 560 561 0
5 500 0 2 0 1
uj5u.com熱心網友回復:
查找連接的連續行:
您可以使用shift 與下一行進行比較any:
mask = df.eq(df.shift(-1)).any(1)
df['connected'] = mask|mask.shift()
輸出:
J1 J2 J3 J4 connected
0 551 5 552 553 True
1 551 554 2 5 True
2 2 554 555 556 True
3 7 6 557 558 False
4 559 9 560 561 False
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/325043.html
上一篇:Python-嘗試在此方法中計算出正確的回圈,它可以使用選擇付款方式,回圈/結帳有問題
下一篇:將雪花表拉入資料框
