Pandas DataFrame.astype()函数
DataFrame.astype()函数用于将pandas对象转换为指定的dtype。Astype()函数还提供将任何合适的现有列转换为类别类型的功能。
DataFrame.astype()函数在我们希望将特定列数据类型大小写转换为另一种数据类型时非常方便。不仅如此,我们还可以使用Python字典输入一次更改多个列类型。dictionary中的键标签对应于列名,而dictionary中的值标签对应于我们希望columns所属的新数据类型。
语法:DataFrame.astype(dtype, copy=True, errors= ‘ raise ‘, **kwargs)
参数:
dtype:使用numpy.dtype或Python类型将整个pandas对象转换为相同的类型。或者,使用{col: dtype,…},其中col是一个列标签,而dtype是一个numpy.dtype或Python类型,将一个或多个DataFrame的columns转换为特定于列的类型。
copy:当copy=True时返回一个副本(设置copy=False时要非常小心,因为更改的值可能会传播到其他pandas对象)。
errors:控制对提供的dtype的无效数据引发异常。
Raise:允许抛出异常
Ignore:抑制异常。发生错误时返回原始对象
传递给构造函数的关键字参数
返回:cast:调用者的类型
示例1
转换Weight列数据类型。
# importing pandas as pd
import pandas as pd
# Making data frame from the csv file
df = pd.read_csv("nba.csv")
# Printing the first 10 rows of
# the data frame for visualization
df[:10]
由于数据有一些“nan”值,因此,为了避免任何错误,我们将删除所有包含任何nan值的行。
# drop all those rows which
# have any 'nan' value in it.
df.dropna(inplace = True)
# let's find out the data type of Weight column
before = type(df.Weight[0])
# Now we will convert it into 'int64' type.
df.Weight = df.Weight.astype('int64')
# let's find out the data type after casting
after = type(df.Weight[0])
# print the value of before
before
# print the value of after
after
输出:
# print the data frame and see
# what it looks like after the change
df
示例2
一次更改多个列的数据类型
将Name列更改为类别类型,将Age列更改为int64类型。
# importing pandas as pd
import pandas as pd
# Making data frame from the csv file
df = pd.read_csv("nba.csv")
# Drop the rows with 'nan' values
df = df.dropna()
# print the existing data type of each column
df.info()
输出:
现在让我们立即更改这两个columns数据类型。
# Passed a dictionary to astype() function
df = df.astype({"Name":'category', "Age":'int64'})
# Now print the data type
# of all columns after change
df.info()
输出:
# print the data frame
# too after the change
df
输出: