DataFrame.astype

Cast column of a DataFrame to a specified dtype.

danfo.DataFrame.astype(kwargs) [source]

Parameters

Type

Description

Default

kwargs

Object

{

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

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

}

Returns:

return DataFrame

Examples

Cast a float dtype column to int

Node
Browser
Node
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({column: "A", dtype: "int32"})
df_new.print()
df.ctypes.print()
Browser
Output
Output
//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

Node
Browser
Node
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({column: "D", dtype: "int32"})
df_new.print()
df.ctypes.print()
Browser
Output
Output
╔═══╤═══════════════════╤═══════════════════╤═══════════════════╤═══════════════════╗
║ │ 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 ║
╚═══╧═══════════════════╧═══════════════════╧═══════════════════╧═══════════════════╝
╔═══╤══════════════════════╗
║ │ 0 ║
╟───┼──────────────────────╢
║ A │ float32 ║
╟───┼──────────────────────╢
║ B │ int32 ║
╟───┼──────────────────────╢
║ C │ float32 ║
╟───┼──────────────────────╢
║ D │ int32 ║
╚═══╧══════════════════════╝

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

Node
Browser
Node
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({column: "D", dtype: "int32"})
df_new.print()
df.ctypes.print()
Browser
Output
Output
╔═══╤═══════════════════╤═══════════════════╤═══════════════════╤═══════════════════╗
║ │ 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 ║
╚═══╧═══════════════════╧═══════════════════╧═══════════════════╧═══════════════════╝
╔═══╤══════════════════════╗
║ │ 0 ║
╟───┼──────────────────────╢
║ A │ float32 ║
╟───┼──────────────────────╢
║ B │ int32 ║
╟───┼──────────────────────╢
║ C │ float32 ║
╟───┼──────────────────────╢
║ D │ int32 ║
╚═══╧══════════════════════╝