📜  更改列或 Pandas Series 的数据类型

📅  最后修改于: 2022-05-13 01:55:46.925000             🧑  作者: Mango

更改列或 Pandas Series 的数据类型

系列是一个一维标签数组,能够保存整数、字符串、浮点数、 Python对象等类型的数据。轴标签统称为索引。

让我们看看在 Pandas Dataframe 中更改列或系列的数据类型的程序。
方法一:使用DataFrame.astype()方法。

我们可以传递任何Python、 Numpy 或 Pandas 数据类型来将数据框的所有列更改为该类型,或者我们可以传递以列名作为键、数据类型作为值的字典来更改选定列的类型。

让我们看看例子:
示例 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。

让我们看看这个例子:

示例:将“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

输出:

数据框的数据类型