DataFrame.asType

Cast column of a DataFrame to a specified dtype.

danfo.DataFrame.asType(options)

ParametersTypeDescriptionDefault

options

Object

{

column: String, label/column name of column to cast

dtype: dtype to cast to. One of [string, float32, int32, boolean]

inplace: Boolean indicating whether to perform the operation inplace or not. Defaults to false

}

{ inplace: false }

Examples

Cast a float dtype column to int

const dfd = require("danfojs-node")

let data = { "A": [-20.1, 30, 47.3, -20] ,
             "B": [34, -4, 5, 6],
             "C": [20.1, -20.23, 30.3, 40.11],
             "D": ["a", "b", "c", "c"] }

let df = new dfd.DataFrame(data)
df.print()
df.ctypes.print()

let df_new = df.asType("A", "int32")
df_new.print()

df.ctypes.print()
//before casting
╔═══╤═══════════════════╤═══════════════════╤═══════════════════╤═══════════════════╗
║   │ A                 │ B                 │ C                 │ D                 ║
╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 0 │ -20.1             │ 34                │ 20.1              │ a                 ║
╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 1 │ 30                │ -4                │ -20.23            │ b                 ║
╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 2 │ 47.3              │ 5                 │ 30.3              │ c                 ║
╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 3 │ -20               │ 6                 │ 40.11             │ c                 ║
╚═══╧═══════════════════╧═══════════════════╧═══════════════════╧═══════════════════╝

╔═══╤══════════════════════╗
║   │ 0                    ║
╟───┼──────────────────────╢
║ A │ float32              ║
╟───┼──────────────────────╢
║ B │ int32                ║
╟───┼──────────────────────╢
║ C │ float32              ║
╟───┼──────────────────────╢
║ D │ string               ║
╚═══╧══════════════════════╝


 //after casting

╔═══╤═══════════════════╤═══════════════════╤═══════════════════╤═══════════════════╗
║   │ A                 │ B                 │ C                 │ D                 ║
╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 0 │ -20               │ 34                │ 20.1              │ a                 ║
╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 1 │ 30                │ -4                │ -20.23            │ b                 ║
╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 2 │ 47                │ 5                 │ 30.3              │ c                 ║
╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 3 │ -20               │ 6                 │ 40.11             │ c                 ║
╚═══╧═══════════════════╧═══════════════════╧═══════════════════╧═══════════════════╝

╔═══╤══════════════════════╗
║   │ 0                    ║
╟───┼──────────────────────╢
║ A │ int32                ║
╟───┼──────────────────────╢
║ B │ int32                ║
╟───┼──────────────────────╢
║ C │ float32              ║
╟───┼──────────────────────╢
║ D │ string               ║
╚═══╧══════════════════════╝

Casting a string column of numbers to int

const dfd = require("danfojs-node")

let data = { "A": [-20.1, 30, 47.3, -20] ,
             "B": [34, -4, 5, 6],
             "C": [20.1, -20.23, 30.3, 40.11],
             "D": ["20", "13", "45", "90"] }

let df = new dfd.DataFrame(data)
let df_new = df.asType("D", "int32")
df_new.print()

df_new.ctypes.print()
╔═══╤═══════════════════╤═══════════════════╤═══════════════════╤═══════════════════╗
║   │ A                 │ B                 │ C                 │ D                 ║
╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 0 │ -20.1             │ 34                │ 20.1              │ 20                ║
╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 1 │ 30                │ -4                │ -20.23            │ 13                ║
╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 2 │ 47.3              │ 5                 │ 30.3              │ 45                ║
╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 3 │ -20               │ 6                 │ 40.11             │ 90                ║
╚═══╧═══════════════════╧═══════════════════╧═══════════════════╧═══════════════════╝

╔═══╤═════════╗
║ A │ float32 ║
╟───┼─────────╢
║ B │ int32   ║
╟───┼─────────╢
║ C │ float32 ║
╟───┼─────────╢
║ D │ int32   ║
╚═══╧═════════╝

Note: Casting a string column of alphabets/words to numeric form will return NaNs as values

const dfd = require("danfojs-node")

let data = { "A": [-20.1, 30, 47.3, -20] ,
             "B": [34, -4, 5, 6],
             "C": [20.1, -20.23, 30.3, 40.11],
             "D": ["a", "b", "c", "c"] }

let df = new dfd.DataFrame(data)
let df_new = df.asType("D","int32")
df_new.print()

df_new.ctypes.print()
╔═══╤═══════════════════╤═══════════════════╤═══════════════════╤═══════════════════╗
║   │ A                 │ B                 │ C                 │ D                 ║
╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 0 │ -20.1             │ 34                │ 20.1              │ NaN               ║
╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 1 │ 30                │ -4                │ -20.23            │ NaN               ║
╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 2 │ 47.3              │ 5                 │ 30.3              │ NaN               ║
╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
║ 3 │ -20               │ 6                 │ 40.11             │ NaN               ║
╚═══╧═══════════════════╧═══════════════════╧═══════════════════╧═══════════════════╝

╔═══╤═════════╗
║ A │ float32 ║
╟───┼─────────╢
║ B │ int32   ║
╟───┼─────────╢
║ C │ float32 ║
╟───┼─────────╢
║ D │ int32   ║
╚═══╧═════════╝

Last updated