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

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

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

更多Pandas文章,请阅读:Pandas教程

使用astype()

使用 astype() 方法,我们可以对 Pandas 数据帧的一个现有列或所有列 强制 实施新的数据类型。在下面的示例中,我们将所有现有列转换为字符串数据类型。

示例

import pandas as pd
#示例数据帧
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]})
#现有的数据类型
print(df.dtypes)
#转换为字符串数据类型
df_str = df.astype(str)
# 验证转换结果
print("***转换后***")
print(df_str.dtypes)

输出

运行上面的代码给我们以下结果 –

DayNo    int64
Name    object
Qty    float64
dtype: object
***转换后***
DayNo    object
Name    object
Qty    object
dtype: object

使用to_numeric()

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

示例

import pandas as pd
# 示例数据帧
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)
#应用转换
print("转换后:")
df_num = pd.to_numeric(df_str.DayNo)
print('DayNo:',df_num.dtypes)

运行上面的代码我们得到以下结果 –

输出

DayNo object
Name object
Qty object
dtype: object
转换后:
DayNo: int64

使用 infer_objects()

它是软转换的一种方法,可以将 DataFrame 的对象数据类型转换为更具体的数据类型。

示例

import pandas as pd
# 示例数据帧
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)
#应用转换
print("转换后:")
df_new = df.infer_objects()
print(df_new.dtypes)

运行上面的代码我们得到以下结果 –

输出

DayNo    object
Qty      object
dtype: object
转换后:
DayNo    int64
Qty      object
dtype: object

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程