Home > OS >  Adding element of a range of values to every N rows in a pandas DataFrame
Adding element of a range of values to every N rows in a pandas DataFrame

Time:12-29

I have the following dataframe that is ordered and consecutive:

    Hour  value
0      1     41
1      2      5
2      3      7
3      4    107
4      5     56
5      6     64
6      7     46
7      8     50
8      9     95
9     10     81
10    11      8
11    12     94

I want to add a range of values to each N rows (4 in this case), e.g.:

    Hour  value  val
0      1     41    1
1      2      5    1
2      3      7    1
3      4    107    1
4      5     56    2
5      6     64    2
6      7     46    2
7      8     50    2
8      9     95    3
9     10     81    3
10    11      8    3
11    12     94    3

CodePudding user response:

IIUC, you can create val column based from the index as follows:

df['val'] = 1   df.index//4

print(df)

Output

    Hour    value  val
0   1      41      1
1   2      5       1
2   3      7       1
3   4      107     1
4   5      56      2
5   6      64      2
6   7      46      2
7   8      50      2
8   9      95      3
9   10     81      3
10  11     8       3
11  12     94      3

CodePudding user response:

Using numpy.arange:

import numpy as np
df['val'] = np.arange(len(df))//4 1

Output:

    Hour  value  val
0      1     41    1
1      2      5    1
2      3      7    1
3      4    107    1
4      5     56    2
5      6     64    2
6      7     46    2
7      8     50    2
8      9     95    3
9     10     81    3
10    11      8    3
11    12     94    3
  • Related