dr.as_integer(): Convert to Integer
dr.as_double(): Convert to Double (float64)
dr.as_numeric(): Convert to Numeric
Use Pandas conversion methods or functions
In [5]:
Copied!
import datar.all as dr
from datar import f
import pandas as pd
from loguru import logger
from pipda import register_verb
dr.filter = register_verb(func=dr.filter_)
dr.slice = register_verb(func=dr.slice_)
##-----------------##
s_float = pd.Series([1.0, 2.5, 3.7, 4.2, 5.9])
s_str = pd.Series(['1', '2', '3', '4.6', '5.7'])
s_mixed = pd.Series(['1', 2, '3', 4, 'five'])
import datar.all as dr
from datar import f
import pandas as pd
from loguru import logger
from pipda import register_verb
dr.filter = register_verb(func=dr.filter_)
dr.slice = register_verb(func=dr.slice_)
##-----------------##
s_float = pd.Series([1.0, 2.5, 3.7, 4.2, 5.9])
s_str = pd.Series(['1', '2', '3', '4.6', '5.7'])
s_mixed = pd.Series(['1', 2, '3', 4, 'five'])
1. dr.as_integer()¶
In [2]:
Copied!
print(dr.as_integer(s_float))
print(dr.as_integer(s_float))
0 1 1 2 2 3 3 4 4 5 dtype: int64
In [6]:
Copied!
try:
print(dr.as_integer(s_str))
except Exception as e:
logger.error(e)
try:
print(dr.as_integer(s_str))
except Exception as e:
logger.error(e)
2026-08-22 13:53:56.246 | ERROR | __main__:<module>:4 - invalid literal for int() with base 10: '4.6'
In [7]:
Copied!
try:
print(dr.as_integer(s_mixed))
except Exception as e:
logger.error(e)
try:
print(dr.as_integer(s_mixed))
except Exception as e:
logger.error(e)
2026-08-22 13:54:16.268 | ERROR | __main__:<module>:4 - invalid literal for int() with base 10: 'five'
2. dr.as_double()¶
In [8]:
Copied!
print(dr.as_double(s_float))
print(dr.as_double(s_float))
0 1.0 1 2.5 2 3.7 3 4.2 4 5.9 dtype: float64
In [9]:
Copied!
print(dr.as_double(s_str))
print(dr.as_double(s_str))
0 1.0 1 2.0 2 3.0 3 4.6 4 5.7 dtype: float64
In [10]:
Copied!
try:
print(dr.as_double(s_mixed))
except Exception as e:
logger.error(e)
try:
print(dr.as_double(s_mixed))
except Exception as e:
logger.error(e)
2026-08-22 13:55:04.245 | ERROR | __main__:<module>:4 - could not convert string to float: 'five'
3. dr.as_numeric()¶
In [11]:
Copied!
print(dr.as_numeric(s_float))
print(dr.as_numeric(s_float))
0 1 1 2 2 3 3 4 4 5 dtype: int64
In [12]:
Copied!
print(dr.as_numeric(s_str))
print(dr.as_numeric(s_str))
0 1.0 1 2.0 2 3.0 3 4.6 4 5.7 dtype: float64
In [13]:
Copied!
try:
print(dr.as_numeric(s_mixed))
except Exception as e:
logger.error(e)
try:
print(dr.as_numeric(s_mixed))
except Exception as e:
logger.error(e)
2026-08-22 13:56:34.230 | ERROR | __main__:<module>:4 - Cannot convert 0 1 1 2 2 3 3 4 4 five dtype: object to numeric
4. Use Pandas conversion methods or functions¶
In [15]:
Copied!
df_demo = pd.DataFrame({
'A': ['1', '2', '3'],
'B': ['4.1', '5.2', '6.3']
})
df_demo = pd.DataFrame({
'A': ['1', '2', '3'],
'B': ['4.1', '5.2', '6.3']
})
In [16]:
Copied!
##-----------------------##
## Using Series.astype() ##
##-----------------------##
print(
df_demo
>> dr.mutate(
A = f.A.astype(int),
B = f.B.astype(float)
)
)
##-----------------------##
## Using Series.astype() ##
##-----------------------##
print(
df_demo
>> dr.mutate(
A = f.A.astype(int),
B = f.B.astype(float)
)
)
A B <int64> <float64> 0 1 4.1 1 2 5.2 2 3 6.3
In [18]:
Copied!
##-----------------------##
## Using pd.to_numeric() ##
##-----------------------##
print(
df_demo
>> dr.pipe(lambda f: f >> dr.mutate(
A = pd.to_numeric(f.A, errors='raise'),
B = pd.to_numeric(f.B, errors='raise')
)
)
)
##-----------------------##
## Using pd.to_numeric() ##
##-----------------------##
print(
df_demo
>> dr.pipe(lambda f: f >> dr.mutate(
A = pd.to_numeric(f.A, errors='raise'),
B = pd.to_numeric(f.B, errors='raise')
)
)
)
A B <int64> <float64> 0 1 4.1 1 2 5.2 2 3 6.3