更改列或 Pandas Series 的数据类型
系列是一个一维标签数组,能够保存整数、字符串、浮点数、 Python对象等类型的数据。轴标签统称为索引。
让我们看看在 Pandas Dataframe 中更改列或系列的数据类型的程序。
方法一:使用DataFrame.astype()方法。
我们可以传递任何Python、 Numpy 或 Pandas 数据类型来将数据框的所有列更改为该类型,或者我们可以传递以列名作为键、数据类型作为值的字典来更改选定列的类型。
Syntax: DataFrame.astype(dtype, copy = True, errors = ’raise’, **kwargs)
Return: casted : type of caller
让我们看看例子:
示例 1:列的数据类型更改为“str”对象。
Python3
# importing the pandas library
import pandas as pd
# creating a DataFrame
df = pd.DataFrame({'srNo': [1, 2, 3],
'Name': ['Geeks', 'for',
'Geeks'],
'id': [111, 222,
333]})
# show the dataframe
print(df)
# show the datatypes
print(df.dtypes)
Python3
# changing the dataframe
# data types to string
df = df.astype(str)
# show the data types
# of dataframe
df.dtypes
Python3
# importing the pandas library
import pandas as pd
# creating a DataFrame
df = pd.DataFrame({'No': [1, 2, 3],
'Name': ['Geeks', 'for',
'Geeks'],
'id': [111, 222,
333]})
# show the dataframe
print(df)
# show the datatypes
print(df.dtypes)
Python3
# creating a dictionary
# with column name and data type
data_types_dict = {'id': str}
# we will change the data type
# of id column to str by giving
# the dict to the astype method
df = df.astype(data_types_dict)
# checking the data types
# using df.dtypes method
df.dtypes
Python3
# import pandas library
import pandas as pd
# dictionary
result_data = {'name': ['Alia', 'Rima', 'Kate',
'John', 'Emma', 'Misa',
'Matt'],
'grade': [13.5, 7.1, 11.5,
3.77, 8.21, 21.22,
17.5],
'qualify': ['yes', 'no', 'yes',
'no', 'no', 'yes',
'yes']}
# create a dataframe
df = pd.DataFrame(result_data)
# show the dataframe
print(df)
#show the datatypes
print(df.dtypes)
Python3
# convert data type of grade column
# into integer
df.grade = df.grade.astype(int)
# show the dataframe
print(df)
# show the datatypes
print(df.dtypes)
Python3
# importing pandas as pd
import pandas as pd
# sample dataframe
df = pd.DataFrame({
'A': ['a', 'b', 'c',
'd', 'e'],
'B': [12, 22, 35,
'47', '55'],
'C': [1.1, '2.1', 3.0,
'4.1', '5.1'] })
# show the dataframe
print(df)
# show the data types
# of all columns
df.dtypes
Python3
# using apply method
df[['B']] = df[['B']].apply(pd.to_numeric)
# show the data types
# of all columns
df.dtypes
输出:
现在,将数据框数据类型更改为字符串。
Python3
# changing the dataframe
# data types to string
df = df.astype(str)
# show the data types
# of dataframe
df.dtypes
输出:
示例 2:现在,让我们将“id”列的数据类型从“int”更改为“str”。我们创建一个字典并使用所需的数据类型指定列名。
Python3
# importing the pandas library
import pandas as pd
# creating a DataFrame
df = pd.DataFrame({'No': [1, 2, 3],
'Name': ['Geeks', 'for',
'Geeks'],
'id': [111, 222,
333]})
# show the dataframe
print(df)
# show the datatypes
print(df.dtypes)
输出:
现在,将 'id' 列的数据类型更改为字符串。
Python3
# creating a dictionary
# with column name and data type
data_types_dict = {'id': str}
# we will change the data type
# of id column to str by giving
# the dict to the astype method
df = df.astype(data_types_dict)
# checking the data types
# using df.dtypes method
df.dtypes
输出:
示例 3:将“grade”列的数据类型从“float”转换为“int”。
Python3
# import pandas library
import pandas as pd
# dictionary
result_data = {'name': ['Alia', 'Rima', 'Kate',
'John', 'Emma', 'Misa',
'Matt'],
'grade': [13.5, 7.1, 11.5,
3.77, 8.21, 21.22,
17.5],
'qualify': ['yes', 'no', 'yes',
'no', 'no', 'yes',
'yes']}
# create a dataframe
df = pd.DataFrame(result_data)
# show the dataframe
print(df)
#show the datatypes
print(df.dtypes)
输出:
现在,我们将“grade”列的数据类型从“float”转换为“int”。
Python3
# convert data type of grade column
# into integer
df.grade = df.grade.astype(int)
# show the dataframe
print(df)
# show the datatypes
print(df.dtypes)
输出:
方法 2:使用Dataframe.apply()方法。
我们可以将 pandas.to_numeric、pandas.to_datetime 和 pandas.to_timedelta 作为参数传递给 apply()函数,以将一列或多列的数据类型分别更改为 numeric、datetime 和 timedelta。
Syntax: Dataframe/Series.apply(func, convert_dtype=True, args=())
Return: Dataframe/Series after applied function/operation.
让我们看看这个例子:
示例:将“B”列的数据类型从“字符串”转换为“int”。
Python3
# importing pandas as pd
import pandas as pd
# sample dataframe
df = pd.DataFrame({
'A': ['a', 'b', 'c',
'd', 'e'],
'B': [12, 22, 35,
'47', '55'],
'C': [1.1, '2.1', 3.0,
'4.1', '5.1'] })
# show the dataframe
print(df)
# show the data types
# of all columns
df.dtypes
输出:
现在,我们将“B”列的数据类型转换为“int”类型。
Python3
# using apply method
df[['B']] = df[['B']].apply(pd.to_numeric)
# show the data types
# of all columns
df.dtypes
输出: