我有一個由3列組成的熊貓數據框。檢查熊貓數據幀
index start end value
0 0 37647 0
1 37648 37846 1
2 37847 42874 0
3 42875 43049 1
4 43050 51352 0
5 51353 51665 -1
6 51666 54500 0
7 54501 54501 -1
8 54502 55259 0
我想實施檢查每行的開始和結束之間的差異。 我特別希望做的是:
if end row x - start row x == 0 incorporate this row in the previous row
例如排8
7 54501 54501 -1
已經結束 - 開始= 0我想修改數據框這樣
index start end value
0 0 37647 0
1 37648 37846 1
2 37847 42874 0
3 42875 43049 1
4 43050 51352 0
5 51353 51665 -1
6 51666 54501 0
7 54502 55259 0
然後由於第7行和第8行現在具有相同的「值」,它應該變成
0 0 37647 0
1 37648 37846 1
2 37847 42874 0
3 42875 43049 1
4 43050 51352 0
5 51353 51665 -1
6 51666 55259 0
EDITED
請注意,一個特定的情況下將是
index start end value
0 0 37647 0
1 37648 37846 1
2 37847 42874 0
3 42875 43049 1
4 43050 51352 0
5 51353 51665 -1
6 51666 54500 0
7 54501 54501 -1
8 54502 54502 0
9 54503 55259 1
在這種情況下,有2個連續行(第8和9),用於其結束和開始值之間的差爲0 在這種情況下,建議的答案會提供一個錯誤,因爲索引7th先前已被刪除。 我用while循環代替for循環解決了這個問題,但我猜這不是最好的做法。
對於這種情況,我們應該有
index start end value
0 0 37647 0
1 37648 37846 1
2 37847 42874 0
3 42875 43049 1
4 43050 51352 0
5 51353 51665 -1
6 51666 54502 0
7 54503 55259 1
感謝您的解決方案,但如果存在用於該2個連續行(索引)結束和開始值之間的差爲1會有一個錯誤,因爲代碼不會找到以前刪除的索引.. – gabboshow
@ gabboshow - 你能否更新你的問題來反映這種情況,以便我們能夠更好地回答它? – pshep123
嗨克里斯謝謝!會很好,如果ii == 0那麼第一行合併到秒如果第二個如果第二個是OK(即差!= 0),如果第二個也有0作爲開始和結束之間的差異,則第一和第二行應該合併到第三個等等.. – gabboshow