Groupby.cumprod
Obtain the cumulative product per group for each column
danfo.Groupby.cumprod() [source]
Parameters: None
Return: DataFrame
Examples
Obtain the cumulative product of a column for each groups, group by one column
Node
1
const dfd = require("danfojs-node")
2
3
4
let data ={A: ['foo', 'bar', 'foo', 'bar',
5
'foo', 'bar', 'foo', 'foo'],
6
B: ['one', 'one', 'two', 'three',
7
'two', 'two', 'one', 'three'],
8
C: [1,3,2,4,5,2,6,7],
9
D: [3,2,4,1,5,6,7,8]
10
}
11
12
let df = new dfd.DataFrame(data)
13
14
let grp = df.groupby(["A"])
15
let grpCol = grp.col(["C"])
16
grpCol.cumProd().head().print()
17
grpCol.cumProd().tail().print()
Copied!
1
Shape: (5,2)
2
3
╔═══╤═══════════════════╤═══════════════════╗
4
║ │ A │ C_cumprod ║
5
╟───┼───────────────────┼───────────────────╢
6
║ 0 │ foo │ 1 ║
7
╟───┼───────────────────┼───────────────────╢
8
║ 1 │ foo │ 2 ║
9
╟───┼───────────────────┼───────────────────╢
10
║ 2 │ foo │ 10 ║
11
╟───┼───────────────────┼───────────────────╢
12
║ 3 │ foo │ 60 ║
13
╟───┼───────────────────┼───────────────────╢
14
║ 4 │ foo │ 420 ║
15
╚═══╧═══════════════════╧═══════════════════╝
16
17
18
Shape: (5,2)
19
20
╔═══╤═══════════════════╤═══════════════════╗
21
║ │ A │ C_cumprod ║
22
╟───┼───────────────────┼───────────────────╢
23
║ 3 │ foo │ 60 ║
24
╟───┼───────────────────┼───────────────────╢
25
║ 4 │ foo │ 420 ║
26
╟───┼───────────────────┼───────────────────╢
27
║ 5 │ bar │ 3 ║
28
╟───┼───────────────────┼───────────────────╢
29
║ 6 │ bar │ 12 ║
30
╟───┼───────────────────┼───────────────────╢
31
║ 7 │ bar │ 24 ║
32
╚═══╧═══════════════════╧═══════════════════╝
Copied!
Obtain the cumprod for two columns for each groups, group by one column
Node
1
const dfd = require("danfojs-node")
2
3
4
let data ={'A': ['foo', 'bar', 'foo', 'bar',
5
'foo', 'bar', 'foo', 'foo'],
6
'B': ['one', 'one', 'two', 'three',
7
'two', 'two', 'one', 'three'],
8
'C': [1,3,2,4,5,2,6,7],
9
'D': [3,2,4,1,5,6,7,8]
10
}
11
12
let df = new dfd.DataFrame(data)
13
14
let grp = df.groupby(["A"])
15
let grpCol = grp.col(["C","D"])
16
grpCol.cumProd().print()
Copied!
1
2
╔════════════╤═══════════════════╤═══════════════════╤═══════════════════╗
3
║ │ A │ C_cumprod │ D_cumprod ║
4
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
5
║ 0 │ foo │ 1 │ 3 ║
6
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
7
║ 1 │ foo │ 2 │ 12 ║
8
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
9
║ 2 │ foo │ 10 │ 60 ║
10
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
11
║ 3 │ foo │ 60 │ 420 ║
12
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
13
║ 4 │ foo │ 420 │ 3360 ║
14
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
15
║ 5 │ bar │ 3 │ 2 ║
16
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
17
║ 6 │ bar │ 12 │ 2 ║
18
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
19
║ 7 │ bar │ 24 │ 12 ║
20
╚════════════╧═══════════════════╧═══════════════════╧═══════════════════╝
Copied!
Obtain the cumprod for a column for each group, group by two columns
Node
1
const dfd = require("danfojs-node")
2
3
4
let data ={'A': ['foo', 'bar', 'foo', 'bar',
5
'foo', 'bar', 'foo', 'foo'],
6
'B': ['one', 'one', 'two', 'three',
7
'two', 'two', 'one', 'three'],
8
'C': [1,3,2,4,5,2,6,7],
9
'D': [3,2,4,1,5,6,7,8]
10
}
11
12
let df = new dfd.DataFrame(data)
13
14
let grp = df.groupby(["A","B"])
15
let grpCol = grp.col(["C"])
16
grpCol.cumProd().print()
Copied!
1
╔════════════╤═══════════════════╤═══════════════════╤═══════════════════╗
2
║ │ A │ B │ C_cumprod ║
3
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
4
║ 0 │ foo │ one │ 1 ║
5
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
6
║ 1 │ foo │ one │ 6 ║
7
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
8
║ 2 │ foo │ two │ 2 ║
9
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
10
║ 3 │ foo │ two │ 10 ║
11
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
12
║ 4 │ foo │ three │ 7 ║
13
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
14
║ 5 │ bar │ one │ 3 ║
15
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
16
║ 6 │ bar │ three │ 4 ║
17
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
18
║ 7 │ bar │ two │ 2 ║
19
╚════════════╧═══════════════════╧═══════════════════╧═══════════════════╝
Copied!
Obtain the cumprod for two columns for each group, group by two columns
Node
1
const dfd = require("danfojs-node")
2
3
4
let data ={A: ['foo', 'bar', 'foo', 'bar',
5
'foo', 'bar', 'foo', 'foo'],
6
B: ['one', 'one', 'two', 'three',
7
'two', 'two', 'one', 'three'],
8
C: [1,3,2,4,5,2,6,7],
9
D: [3,2,4,1,5,6,7,8]
10
}
11
12
let df = new dfd.DataFrame(data)
13
14
let grp = df.groupby(["A","B"])
15
let grpCol = grp.col(["C","D"])
16
grpCol.cumProd().print()
Copied!
1
╔════════════╤═══════════════════╤═══════════════════╤═══════════════════╤═══════════════════╗
2
║ │ A │ B │ C_cumprod │ D_cumprod ║
3
╟────────────┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
4
║ 0 │ foo │ one │ 1 │ 3 ║
5
╟────────────┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
6
║ 1 │ foo │ one │ 6 │ 21 ║
7
╟────────────┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
8
║ 2 │ foo │ two │ 2 │ 4 ║
9
╟────────────┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
10
║ 3 │ foo │ two │ 10 │ 20 ║
11
╟────────────┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
12
║ 4 │ foo │ three │ 7 │ 8 ║
13
╟────────────┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
14
║ 5 │ bar │ one │ 3 │ 2 ║
15
╟────────────┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
16
║ 6 │ bar │ three │ 4 │ 1 ║
17
╟────────────┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
18
║ 7 │ bar │ two │ 2 │ 6 ║
19
╚════════════╧═══════════════════╧═══════════════════╧═══════════════════╧═══════════════════╝
Copied!
Copy link