改变一个列或Pandas系列的数据类型
系列是一个一维标签数组,能够容纳整数、字符串、浮点数、Python对象等类型的数据。轴的标签被统称为索引。
让我们看看在Pandas数据框架中改变列或系列的数据类型的程序。
方法1:使用DataFrame.astype()方法。
我们可以传递任何Python、Numpy或Pandas数据类型来改变数据框架的所有列的类型,或者我们可以传递一个以列名为键、以数据类型为值的字典来改变选定列的类型。
语法: DataFrame.astype(dtype, copy = True, errors = ’raise’, **kwargs)
让我们看看这些例子。
示例1:列的数据类型被改为 “str “对象。
# 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)
输出:
现在,将数据框的数据类型改为字符串。
# changing the dataframe
# data types to string
df = df.astype(str)
# show the data types
# of dataframe
df.dtypes
输出 :
例子2:现在,让我们把 “id “列的数据类型从 “int “改为 “str”。我们创建一个字典,并指定具有所需数据类型的列名。
# 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’列的数据类型改为字符串。
# 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:将 “成绩 “列的数据类型从 “float “转换为 “int”。
# 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”。
# 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()函数,将一个或多个列的数据类型分别改为数值、日期和时间。
语法: Dataframe/Series.apply(func, convert_dtype=True, args=())
返回:应用函数/操作后的数据框架/系列。
让我们看看这个例子。
例子:将 “B “列的数据类型从 “字符串 “转换成 “int”。
# 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 “类型。
# using apply method
df[['B']] = df[['B']].apply(pd.to_numeric)
# show the data types
# of all columns
df.dtypes
输出: