更改 Pandas DataFrame 中一个或多个列的数据类型


很多时候,我们可能需要转换 Pandas 数据框中一个或多个列的数据类型以适应某些计算需求。Pandas 中有一些内置函数或方法可以实现这一点。

使用 astype()

使用 astype() 方法,我们可以将新的数据类型应用于 Pandas 数据框中现有的列或所有列。在下面的示例中,我们将所有现有列转换为字符串数据类型。

示例

 现场演示

import pandas as pd
#Sample dataframe
df = pd.DataFrame({
   'DayNo': [1, 2, 3, 4, 5,6,7],
   'Name': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu','Fri','Sat'],
   'Qty': [2.6, 5, 11.8, 2, 5.6,0,0.25]})
# Exisitng Data types
print(df.dtypes)
#Convert to string data type
df_str = df.astype(str)
# Verify the conversion
print("***After Conversion***")
print(df_str.dtypes)

输出

运行以上代码,我们将得到以下结果:

DayNo       int64
Name       object
Qty     float64
dtype: object
***After Conversion***
DayNo    object
Name     object
Qty     object
dtype: object

使用 to_numeric()

我们可以使用 to_numeric() 将数据框中当前标记为字符串的数字转换为数值型。

示例

 现场演示

import pandas as pd
# Example dataframe
df = pd.DataFrame({
   'DayNo': [1, 2, 3, 4, 5,6,7],
   'Name': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu','Fri','Sat'],
   'Qty': [2.6, 5, 11.8, 2, 5.6,0,0.25]})
df_str = df.astype(str)
print(df_str.dtypes)
#Applying conversion
print("After Conversion:")
df_num = pd.to_numeric(df_str.DayNo)
print('DayNo:',df_num.dtypes)

运行以上代码,我们将得到以下结果:

输出

DayNo object
Name object
Qty object
dtype: object
After Conversion:
DayNo: int64

使用 infer_objects()

这是一种软转换方法,我们可以将数据框中具有对象数据类型的列转换为更具体的类型。

示例

import pandas as pd
# Example dataframe
df = pd.DataFrame({
   'DayNo': [1, 2, 3, 4, 5,6,7],
# 'Name': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu','Fri','Sat'],
   'Qty': ['2.6', '5', '11.8', '2', '5.6','0','0.25']}, dtype='object')
print(df.dtypes)
#Applying conversion
print("After Conversion:")
df_new = df.infer_objects()
print(df_new.dtypes)

运行以上代码,我们将得到以下结果:

输出

DayNo    object
Qty      object
dtype:   object
After Conversion:
DayNo   int64
Qty    object
dtype: object

更新于: 2019年8月23日

2K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.