Pandas 将float64列转换为int64

Pandas 将float64列转换为int64

在本文中,我们将介绍如何使用Pandas将一个DataFrame中float64列的数据类型转换为int64数据类型。在实际的数据处理过程中,这个问题可能经常出现,因为有些数据集中的数值类型并不是我们需要的,比如说我们需要整数类型的数据,但是某一个列却是浮点数形式的。那么怎么来处理这一问题呢?

阅读更多:Pandas 教程

1. 产生问题的原因

一些数据集中的列为了保留数据的精度和有效性,被存储为浮点数类型。这样做的原因是浮点数可以容纳比整数类型更大的数据范围,并且具有更好的精确度。但是在某些情况下,我们需要将这些浮点数类型的数据转换为整数类型。比如在统计某一列数据的总和时,我们更愿意知道这些数字的整数和。

2. 查看数据集的数据类型

要检查数据集的列及其数据类型,可以使用Pandas的dtype属性。下面是一个例子,其中我们使用Python的随机数模块random来创建一个具有两个浮点数类型的列的DataFrame。

import pandas as pd
import numpy as np
import random

data = {
    'Number1': np.random.random(5),
    'Number2': np.random.random(5)
}

df = pd.DataFrame(data)
print(df.dtypes)
Python

结果是:

Number1    float64
Number2    float64
dtype: object
Python

在这个示例中,我们创建了一个带有5行和2列的随机数据集。我们使用DataFrame的dtypes属性查看了这个数据集的列及其数据类型。由输出结果可知,这两列都是float64类型。

3. 转换float64类型为int64类型

接下来,我们将使用Pandas的astype()函数将float64类型的数据转换为int64类型。astype()函数它用于转换数据的数据类型。下面的例子中我们将“Number2”列转换为有符号的32位整数类型。

df['Number2'] = df['Number2'].astype(np.int32)
print(df.dtypes)
Python

输出结果为:

Number1    float64
Number2      int32
dtype: object
Python

在此示例中,第36行使用astype()函数将“Number2”列的数据类型从float64转换为int32。我们还可以使用其他整数类型进行转换,例如int8int16int32int64,也可以使用无符号整数类型进行转换。

上面这个 df['Number2'] = df['Number2'].astype(np.int32) 会提示一个 warning message:

A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
Python

也就是说, 引用原 DataFrame 的一个 slice 时,由于在拷贝操作中某些行标或列标的混淆,就可能涉及到新复制用于目标结果的局部数据空间,称之为深拷贝问题。

为避免这个问题,可以使用如下方式转换:

df.loc[:, 'Number2'] = df['Number2'].astype(np.int32)
Python

这样便不会出现这个 warning message.

另一个可以使用的选项是使用Pandas的to_numeric函数,它可以将数据转换为数字类型。这是在处理包含非数字字符串的数据时非常有用的。

df['Number2'] = pd.to_numeric(df['Number2'], downcast='integer')
print(df.dtypes)
Python

总结

本文介绍了如何使用Pandas将float64列数据类型转换为int64数据类型。在数据处理中,经常会遇到需要修改数据类型的情况。使用Pandas的astype()函数和to_numeric()函数可以帮助我们快速并且简便地实现数据类型的转换。需要注意的是,在修改一个DataFrame的某个列的数据类型时,需要使用df.loc[]或者df.iloc[]来获取或修改列的值,以避免引起SettingWithCopyWarning的警告。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册