改变Pandas数据框架中一个或多个列的数据类型

改变Pandas数据框架中一个或多个列的数据类型

让我们看看如何在Pandas数据框架中改变列的类型,在Pandas数据框架中,有不同的方法来改变一个或多个列的数据类型。

方法1:使用DataFrame.astype()改变pandas中的列类型

DataFrame.astype()方法用于将pandas对象转换为一个指定的dtype。这个函数也提供了将任何合适的现有列转换为分类类型的能力。

# importing pandas as pd
import pandas as pd
 
# sample dataframe
df = pd.DataFrame({
    'A': [1, 2, 3, 4, 5],
    'B': ['a', 'b', 'c', 'd', 'e'],
    'C': [1.1, '1.0', '1.3', 2, 5]})
 
# using dictionary to convert specific columns
convert_dict = {'A': int,
                'C': float
                }
 
df = df.astype(convert_dict)
print(df.dtypes)
Python

输出:

改变Pandas数据框架中一个或多个列的数据类型

方法2:使用DataFrame.astype()将列类型改为字符串对象

我们可以传递任何Python、Numpy或Pandas的数据类型来改变Dataframe的所有列的类型,或者我们可以传递一个以列名为键、以数据类型为值的字典来改变选定列的类型。

# importing pandas as pd
import pandas as pd
 
# sample dataframe
df = pd.DataFrame({
    'A': [1, 2, 3, 4, 5],
    'B': ['a', 'b', 'c', 'd', 'e'],
    'C': [1.1, '1.0', '1.3', 2, 5]})
 
# converting all columns to string type
df = df.astype(str)
print(df.dtypes)
Python

输出:

改变Pandas数据框架中一个或多个列的数据类型

方法3:使用DataFrame.apply()改变pandas中的列类型

我们可以将pandas.to_numeric、pandas.to_datetime和pandas.to_timedelta作为参数来应用apply()函数,将一个或多个列的数据类型分别改为数值、DateTime和时间delta。

# importing pandas as pd
import pandas as pd
 
# sample dataframe
df = pd.DataFrame({
    'A': [1, 2, 3, '4', '5'],
    'B': ['a', 'b', 'c', 'd', 'e'],
    'C': [1.1, '2.1', 3.0, '4.1', '5.1']})
 
# using apply method
df[['A', 'C']] = df[['A', 'C']].apply(pd.to_numeric)
print(df.dtypes)
Python

输出:

改变Pandas数据框架中一个或多个列的数据类型

方法4:使用DataFrame.infer_objects()改变pandas中的列类型

这个方法通过推断 “对象 “类型列的数据类型来尝试软转换。非对象和不可转换的列则不作任何改变。

# importing pandas as pd
import pandas as pd
 
# sample dataframe
df = pd.DataFrame({
    'A': [1, 2, 3, 4, 5],
    'B': ['a', 'b', 'c', 'd', 'e'],
    'C': [1.1, 2.1, 3.0, 4.1, 5.1]
}, dtype='object')
 
# converting datatypes
df = df.infer_objects()
print(df.dtypes)
Python

输出:

改变Pandas数据框架中一个或多个列的数据类型

**方法5:使用convert_dtypes()改变pandas中的列类型 **

一个新的DataFrame,其每一列的数据类型被改变为最佳类型,由转换dtypes()方法返回。

import pandas as pd
 
data = {
  "name": ["Aman", "Hardik", pd.NA],
  "qualified": [True, False, pd.NA]
}
 
df = pd.DataFrame(data)
 
print("Original_dtypes:")
print(df.dtypes)
 
newdf = df.convert_dtypes()
 
print("New_dtypes:")
print(newdf.dtypes)
Python

输出:

Original_dtypes:
name         object
qualified    object
dtype: object
New_dtypes:
name          string
qualified    boolean
dtype: object
Python

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册