danfojs icon indicating copy to clipboard operation
danfojs copied to clipboard

Data columns overwrite DataFrame's functions

Open rkuang9 opened this issue 6 months ago • 0 comments

Describe the bug Loaded data columns are able to overwrite DataFrame's functions. When data where a column labeledsum is loaded, .sum() throws TypeError: df.sum is not a function.

Function causing this: https://github.com/javascriptdata/danfojs/blame/6b4431fcc40cce8c02beea9d187f5cad70c0e92e/src/danfojs-base/core/frame.ts#L61

It is called in several places, including DataFrame's constructor: https://github.com/javascriptdata/danfojs/blame/6b4431fcc40cce8c02beea9d187f5cad70c0e92e/src/danfojs-base/core/frame.ts#L53

To Reproduce Using the code from the sum() documentation: https://danfo.jsdata.org/api-reference/dataframe/danfo.dataframe.sum, but relabeling column A to sum

let data = {
    "sum": [-20.1, 30, 47.3, -20], // <---- changed from "A" to "sum"
    "B": [34, -4, 5, 6], // <--- try changing "B" to "print" to overwrite print()
    "C": [20, -20, 30, -40]
}

let df = new DataFrame(data)

df.print()

let df_sum = df.sum()
df_sum.print()

Throws the error TypeError: df.sum is not a function

Expected behavior Expected to see the output from the documentation

╔════════════╤═══════════════════╤═══════════════════╤═══════════════════╗
║            │ A                 │ B                 │ C                 ║
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 0          │ -20.1             │ 34                │ 20                ║
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 1          │ 30                │ -4                │ -20               ║
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 2          │ 47.3              │ 5                 │ 30                ║
╟────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 3          │ -20               │ 6                 │ -40               ║
╚════════════╧═══════════════════╧═══════════════════╧═══════════════════╝

╔═══╤══════╗
║ 0 │ 33.9 ║
╟───┼──────╢
║ 1 │ 6    ║
╟───┼──────╢
║ 2 │ 82.3 ║
╟───┼──────╢
║ 3 │ -54  ║
╚═══╧══════╝

Desktop :

  • Language: TypeScript
  • OS: any
  • Browser: any
  • Version: 1.1.2 (code still there in 1.2)

rkuang9 avatar Jun 13 '25 09:06 rkuang9