簡體   English   中英

比較 Pandas 數據框中的偶數行和奇數行

[英]Compare even and odd rows in a Pandas Data Frame

我有一個這樣的數據框:

指數 時間 ID
0 10:10:00 11
1 10:10:01 12
2 10:10:02 12
3 10:10:04 12
4 10:10:06 13
5 10:10:07 13
6 10:10:08 11
7 10:10:10 11
8 10:10:12 11
9 10:10:14 13

我想比較每對的id列。 所以在第0行和1行之間,在第2行和3行之間等等。換句話說,我想將偶數行與奇數行進行比較,並保持相同的id對行。

我理想的輸出是:

指數 時間 ID
2 10:10:02 12
3 10:10:04 12
4 10:10:06 13
5 10:10:07 13
6 10:10:08 11
7 10:10:10 11

我試過了,但沒有用:

df = df[
    df[::2]["id"] ==df[1::2]["id"]
]

您可以使用GroupBy.transform方法:

# for each pair, is there only one kind of Id?
out = df[df.groupby(np.arange(len(df))//2)['Id'].transform('nunique').eq(1)]

或者,更有效的是,使用底層的 numpy 數組:

# convert to numpy
a = df['Id'].to_numpy()

# are the odds equal to evens?
out = df[np.repeat((a[::2]==a[1::2]), 2)]

輸出:

   Index      Time  Id
2      2  10:10:02  12
3      3  10:10:04  12
4      4  10:10:06  13
5      5  10:10:07  13
6      6  10:10:08  11
7      7  10:10:10  11

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM