簡體   English   中英

如何在特定情況下對 dataframe 進行分類?

[英]How do I classify a dataframe in a specific case?

我有一個表格的pandas.DataFrame 我將向您展示一個簡單的示例。(實際上,它由數億行數據組成。)。 我想在“2”列中的字母發生變化時更改數字。 其余列(列:1,3 ~)中的數字不應更改。

df=

  index    1            2         3
    

    0      0           a100       1
    1      1.04        a100       2
    2      32          a100       3
    3      5.05        a105       4
    4      1.01        a105       5
    5      155         a105       6
    6      3155.26     a105       7
    7      354.12      a100       8
    8      5680.13     a100       9
    9      125.55      a100       10
    10     13.32       a100       11
    11     5656.33     a156       12
    12     456.61      a156       13
    13     23.52       a1235      14
    14     35.35       a1235      15
    15     350.20      a100       16
    16     30.         a100       17
    17     13.50       a100       18
    18     323.13      a231       19
    19     15.11       a1111      20
    20     11.22       a1111      21

這是我的預期結果:

df=

  index    1           2       3
    

    0      0           0       1
    1      1.04        0       2
    2      32          0       3
    3      5.05        1       4
    4      1.01        1       5
    5      155         1       6
    6      3155.26     1       7
    7      354.12      2       8
    8      5680.13     2       9
    9      125.55      2       10
    10     13.32       2       11
    11     5656.33     3       12
    12     456.61      3       13
    13     23.52       4       14
    14     35.35       4       15
    15     350.20      5       16
    16     30          5       17
    17     13.50       5       18
    18     323.13      6       19
    19     15.11       7       20
    20     11.22       7       21

我該如何解決這個問題?

將通過比較創建的連續組用於具有累積總和的不相等移位值,然后減去 1:

#if column is string '2'
df['2'] = df['2'].ne(df['2'].shift()).cumsum().sub(1)

#if column is number 2
df[2] = df[2].ne(df[2].shift()).cumsum().sub(1)

print (df)
    index        1  2   3
0       0     0.00  0   1
1       1     1.04  0   2
2       2    32.00  0   3
3       3     5.05  1   4
4       4     1.01  1   5
5       5   155.00  1   6
6       6  3155.26  1   7
7       7   354.12  2   8
8       8  5680.13  2   9
9       9   125.55  2  10
10     10    13.32  2  11
11     11  5656.33  3  12
12     12   456.61  3  13
13     13    23.52  4  14
14     14    35.35  4  15
15     15   350.20  5  16
16     16    30.00  5  17
17     17    13.50  5  18
18     18   323.13  6  19
19     19    15.11  7  20
20     20    11.22  7  21

暫無
暫無

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

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