我有一個 pandas.DataFrame 的形式。(如果你使用 numpy 沒關系。)每當“時間”列的值發生變化時,我想輸出一個“moID”值。我將在下面向您展示一個簡單的示例。我將應該輸出的行標記為'<<<'。
index 'moID' 'time'
0 1 0 <<<
1 25 0
2 3 1 <<<
3 45 1
4 12 1
5 2 2 <<<
6 34 1 <<<
7 4 1
8 12 1
9 2 3 <<<
10 5 3
11 37 3
12 85 0 <<<
13 2 0
14 45 1 <<<
15 55 1
16 2 3 <<<
17 23 3
18 42 0 <<<
19 1 0
20 42 1 <<<
21 2 2 <<<
22 41 2
23 3 1 <<<
24 52 1
25 2 1
26 24 3 <<<
27 3 3
28 5 3
結果是:
index 'moID'
1
3
2
34
2
85
45
2
42
42
2
3
24
請幫幫我。
uj5u.com熱心網友回復:
您可以使用shift ne查看連續行是否匹配并創建一個布爾系列(如果時間相同,則為 False,如果時間不同,則為 True)。然后將其用作掩碼來過濾所需的專案:
out = df.loc[df['time'].ne(df['time'].shift()), 'moID']
輸出:
0 1
2 3
5 2
6 34
9 2
12 85
14 45
16 2
18 42
20 42
21 2
23 3
26 24
Name: moID, dtype: int64
uj5u.com熱心網友回復:
您可以通過以下方式使用布爾索引:
result = df.moID[df.time.diff() != 0]
df.time.diff() != 0生成一系列布爾值,用于索引moID列。
對于您的源資料,結果是:
0 1
2 3
5 2
6 34
9 2
12 85
14 45
16 2
18 42
20 42
21 2
23 3
26 24
Name: moID, dtype: int64
左列是索引,右列是實際值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/416476.html
標籤:
上一篇:使用numpy創建陣列的子陣列
下一篇:熊貓值查找但具有重復值
