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

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

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

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

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                 ║
╚════════════╧═══════════════════╧═══════════════════╧═══════════════════╧═══════════════════╝

Last updated