我有一個這樣的資料框:
| 指數 | 時間 | 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"]
]
uj5u.com熱心網友回復:
您可以使用以下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
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/493412.html
