DataFrame.astype
Cast column of a DataFrame to a specified dtype.
danfo.DataFrame.astype(options) [source]
Parameters
Type
Description
Default
options
Object
{
column: Array, 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 }
Returns:
return DataFrame

Examples

Cast a float dtype column to int

Node
Browser
1
const dfd = require("danfojs-node")
2
3
let data = { "A": [-20.1, 30, 47.3, -20] ,
4
"B": [34, -4, 5, 6],
5
"C": [20.1, -20.23, 30.3, 40.11],
6
"D": ["a", "b", "c", "c"] }
7
8
let df = new dfd.DataFrame(data)
9
df.print()
10
df.ctypes.print()
11
12
let df_new = df.astype({column: "A", dtype: "int32"})
13
df_new.print()
14
15
df.ctypes.print()
Copied!
1
Copied!
Output
1
//before casting
2
╔═══╤═══════════════════╤═══════════════════╤═══════════════════╤═══════════════════╗
3
║ │ A │ B │ C │ D ║
4
╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
5
║ 0 │ -20.1 │ 34 │ 20.1 │ a ║
6
╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
7
║ 1 │ 30 │ -4 │ -20.23 │ b ║
8
╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
9
║ 2 │ 47.3 │ 5 │ 30.3 │ c ║
10
╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
11
║ 3 │ -20 │ 6 │ 40.11 │ c ║
12
╚═══╧═══════════════════╧═══════════════════╧═══════════════════╧═══════════════════╝
13
14
╔═══╤══════════════════════╗
15
║ │ 0 ║
16
╟───┼──────────────────────╢
17
║ A │ float32 ║
18
╟───┼──────────────────────╢
19
║ B │ int32 ║
20
╟───┼──────────────────────╢
21
║ C │ float32 ║
22
╟───┼──────────────────────╢
23
║ D │ string ║
24
╚═══╧══════════════════════╝
25
26
27
//after casting
28
29
╔═══╤═══════════════════╤═══════════════════╤═══════════════════╤═══════════════════╗
30
║ │ A │ B │ C │ D ║
31
╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
32
║ 0 │ -20 │ 34 │ 20.1 │ a ║
33
╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
34
║ 1 │ 30 │ -4 │ -20.23 │ b ║
35
╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
36
║ 2 │ 47 │ 5 │ 30.3 │ c ║
37
╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
38
║ 3 │ -20 │ 6 │ 40.11 │ c ║
39
╚═══╧═══════════════════╧═══════════════════╧═══════════════════╧═══════════════════╝
40
41
╔═══╤══════════════════════╗
42
║ │ 0 ║
43
╟───┼──────────────────────╢
44
║ A │ int32 ║
45
╟───┼──────────────────────╢
46
║ B │ int32 ║
47
╟───┼──────────────────────╢
48
║ C │ float32 ║
49
╟───┼──────────────────────╢
50
║ D │ string ║
51
╚═══╧══════════════════════╝
Copied!

Casting a string column of numbers to int

Node
Browser
1
const dfd = require("danfojs-node")
2
3
let data = { "A": [-20.1, 30, 47.3, -20] ,
4
"B": [34, -4, 5, 6],
5
"C": [20.1, -20.23, 30.3, 40.11],
6
"D": ["20", "13", "45", "90"] }
7
8
let df = new dfd.DataFrame(data)
9
let df_new = df.astype({column: "D", dtype: "int32"})
10
df_new.print()
11
12
df_new.ctypes.print()
13
14
Copied!
1
Copied!
Output
1
╔═══╤═══════════════════╤═══════════════════╤═══════════════════╤═══════════════════╗
2
║ │ A │ B │ C │ D ║
3
╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
4
║ 0 │ -20.1 │ 34 │ 20.1 │ 20 ║
5
╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
6
║ 1 │ 30 │ -4 │ -20.23 │ 13 ║
7
╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
8
║ 2 │ 47.3 │ 5 │ 30.3 │ 45 ║
9
╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
10
║ 3 │ -20 │ 6 │ 40.11 │ 90 ║
11
╚═══╧═══════════════════╧═══════════════════╧═══════════════════╧═══════════════════╝
12
13
╔═══╤══════════════════════╗
14
║ │ 0 ║
15
╟───┼──────────────────────╢
16
║ A │ float32 ║
17
╟───┼──────────────────────╢
18
║ B │ int32 ║
19
╟───┼──────────────────────╢
20
║ C │ float32 ║
21
╟───┼──────────────────────╢
22
║ D │ int32 ║
23
╚═══╧══════════════════════╝
24
Copied!
Note: Casting a string column of alphabets/words to numeric form will return NaNs as values
Node
Browser
1
const dfd = require("danfojs-node")
2
3
let data = { "A": [-20.1, 30, 47.3, -20] ,
4
"B": [34, -4, 5, 6],
5
"C": [20.1, -20.23, 30.3, 40.11],
6
"D": ["a", "b", "c", "c"] }
7
8
let df = new dfd.DataFrame(data)
9
let df_new = df.astype({column: "D", dtype: "int32"})
10
df_new.print()
11
12
df_new.ctypes.print()
13
14
Copied!
1
Copied!
Output
1
2
╔═══╤═══════════════════╤═══════════════════╤═══════════════════╤═══════════════════╗
3
║ │ A │ B │ C │ D ║
4
╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
5
║ 0 │ -20.1 │ 34 │ 20.1 │ NaN ║
6
╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
7
║ 1 │ 30 │ -4 │ -20.23 │ NaN ║
8
╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
9
║ 2 │ 47.3 │ 5 │ 30.3 │ NaN ║
10
╟───┼───────────────────┼───────────────────┼───────────────────┼───────────────────╢
11
║ 3 │ -20 │ 6 │ 40.11 │ NaN ║
12
╚═══╧═══════════════════╧═══════════════════╧═══════════════════╧═══════════════════╝
13
14
╔═══╤══════════════════════╗
15
║ │ 0 ║
16
╟───┼──────────────────────╢
17
║ A │ float32 ║
18
╟───┼──────────────────────╢
19
║ B │ int32 ║
20
╟───┼──────────────────────╢
21
║ C │ float32 ║
22
╟───┼──────────────────────╢
23
║ D │ int32 ║
24
╚═══╧══════════════════════╝
Copied!
Last modified 17d ago