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
const dfd = require("danfojs-node")
let data ={A: ['foo', 'bar', 'foo', 'bar',
'foo', 'bar', 'foo', 'foo'],
B: ['one', 'one', 'two', 'three',
'two', 'two', 'one', 'three'],
C: [1,3,2,4,5,2,6,7],
D: [3,2,4,1,5,6,7,8]
}
let df = new dfd.DataFrame(data)
let grp = df.groupby(["A"])
let grpCol = grp.col(["C"])
grpCol.cumProd().head().print()
grpCol.cumProd().tail().print()
Shape: (5,2)
╔═══╤═══════════════════╤═══════════════════╗
║ │ A │ C_cumprod ║
╟───┼───────────────────┼───────────────────╢
║ 0 │ foo │ 1 ║
╟───┼───────────────────┼───────────────────╢
║ 1 │ foo │ 2 ║
╟───┼───────────────────┼───────────────────╢
║ 2 │ foo │ 10 ║
╟───┼───────────────────┼───────────────────╢
║ 3 │ foo │ 60 ║
╟───┼───────────────────┼───────────────────╢
║ 4 │ foo │ 420 ║
╚═══╧═══════════════════╧═══════════════════╝
Shape: (5,2)
╔═══╤═══════════════════╤═══════════════════╗
║ │ A │ C_cumprod ║
╟───┼───────────────────┼───────────────────╢
║ 3 │ foo │ 60 ║
╟───┼───────────────────┼───────────────────╢
║ 4 │ foo │ 420 ║
╟───┼───────────────────┼───────────────────╢
║ 5 │ bar │ 3 ║
╟───┼───────────────────┼───────────────────╢
║ 6 │ bar │ 12 ║
╟───┼───────────────────┼───────────────────╢
║ 7 │ bar │ 24 ║
╚═══╧═══════════════════╧═══════════════════╝
Obtain the cumprod for two columns for each groups, group by one column
Node
const dfd = require("danfojs-node")
let data ={'A': ['foo', 'bar', 'foo', 'bar',
'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'three',
'two', 'two', 'one', 'three'],
'C': [1,3,2,4,5,2,6,7],
'D': [3,2,4,1,5,6,7,8]
}
let df = new dfd.DataFrame(data)
let grp = df.groupby(["A"])
let grpCol = grp.col(["C","D"])
grpCol.cumProd().print()
╔════════════╤═══════════════════╤═══════════════════╤═══════════════════╗
║ │ A │ C_cumprod │ D_cumprod ║
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 0 │ foo │ 1 │ 3 ║
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 1 │ foo │ 2 │ 12 ║
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 2 │ foo │ 10 │ 60 ║
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 3 │ foo │ 60 │ 420 ║
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 4 │ foo │ 420 │ 3360 ║
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 5 │ bar │ 3 │ 2 ║
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 6 │ bar │ 12 │ 2 ║
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 7 │ bar │ 24 │ 12 ║
╚════════════╧═══════════════════╧═══════════════════╧═══════════════════╝
Obtain the cumprod for a column for each group, group by two columns
Node
const dfd = require("danfojs-node")
let data ={'A': ['foo', 'bar', 'foo', 'bar',
'foo', 'bar', 'foo', 'foo'],
'B': ['one', 'one', 'two', 'three',
'two', 'two', 'one', 'three'],
'C': [1,3,2,4,5,2,6,7],
'D': [3,2,4,1,5,6,7,8]
}
let df = new dfd.DataFrame(data)
let grp = df.groupby(["A","B"])
let grpCol = grp.col(["C"])
grpCol.cumProd().print()
╔════════════╤═══════════════════╤═══════════════════╤═══════════════════╗
║ │ A │ B │ C_cumprod ║
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 0 │ foo │ one │ 1 ║
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 1 │ foo │ one │ 6 ║
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 2 │ foo │ two │ 2 ║
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 3 │ foo │ two │ 10 ║
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 4 │ foo │ three │ 7 ║
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 5 │ bar │ one │ 3 ║
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 6 │ bar │ three │ 4 ║
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 7 │ bar │ two │ 2 ║
╚════════════╧═══════════════════╧═══════════════════╧═══════════════════╝
Obtain the cumprod for two columns for each group, group by two columns
Node
const dfd = require("danfojs-node")
let data ={A: ['foo', 'bar', 'foo', 'bar',
'foo', 'bar', 'foo', 'foo'],
B: ['one', 'one', 'two', 'three',
'two', 'two', 'one', 'three'],
C: [1,3,2,4,5,2,6,7],
D: [3,2,4,1,5,6,7,8]
}
let df = new dfd.DataFrame(data)
let grp = df.groupby(["A","B"])
let grpCol = grp.col(["C","D"])
grpCol.cumProd().print()
╔════════════╤═══════════════════╤═══════════════════╤═══════════════════╤═══════════════════╗
║ │ A │ B │ C_cumprod │ D_cumprod ║
╟────────────┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 0 │ foo │ one │ 1 │ 3 ║
╟────────────┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 1 │ foo │ one │ 6 │ 21 ║
╟────────────┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 2 │ foo │ two │ 2 │ 4 ║
╟────────────┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 3 │ foo │ two │ 10 │ 20 ║
╟────────────┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 4 │ foo │ three │ 7 │ 8 ║
╟────────────┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 5 │ bar │ one │ 3 │ 2 ║
╟────────────┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 6 │ bar │ three │ 4 │ 1 ║
╟────────────┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 7 │ bar │ two │ 2 │ 6 ║
╚════════════╧═══════════════════╧═══════════════════╧═══════════════════╧═══════════════════╝
Copy link