将浮点数的数据框转换为熊猫中的整数?

Posted

技术标签:

【中文标题】将浮点数的数据框转换为熊猫中的整数?【英文标题】:Convert dataframe of floats to integers in pandas? 【发布时间】:2020-02-07 05:49:27 【问题描述】:

如何将我的 pandas 数据帧的每个数字元素转换为整数?我没有在网上看到任何关于如何做到这一点的文档,鉴于 Pandas 如此受欢迎,这令人惊讶......

【问题讨论】:

类似这样的东西 - ***.com/questions/21291259/… ? 【参考方案1】:

如果您有一个整数数据框,只需直接使用astype

df.astype(int)

如果没有,请先使用select_dtypes 选择数字列。

df.select_dtypes(np.number).astype(int)

df = pd.DataFrame('col1': [1.,2.,3.,4.], 'col2': [10.,20.,30.,40.])

   col1  col2
0   1.0  10.0
1   2.0  20.0
2   3.0  30.0
3   4.0  40.0

>>> df.astype(int)

   col1  col2
0     1    10
1     2    20
2     3    30
3     4    40

【讨论】:

【参考方案2】:

您可以为此使用apply

import pandas as pd
import numpy as np

df = pd.DataFrame('A':np.arange(1.0, 20.0), 'B':np.arange(101.0, 120.0))
print(df)
       A      B
0    1.0  101.0
1    2.0  102.0
2    3.0  103.0
3    4.0  104.0
4    5.0  105.0
5    6.0  106.0
6    7.0  107.0
7    8.0  108.0
8    9.0  109.0
9   10.0  110.0
10  11.0  111.0
11  12.0  112.0
12  13.0  113.0
13  14.0  114.0
14  15.0  115.0
15  16.0  116.0
16  17.0  117.0
17  18.0  118.0
18  19.0  119.0

df2 = df.apply(lambda a: [int(b) for b in a])
print(df2)

     A    B
0    1  101
1    2  102
2    3  103
3    4  104
4    5  105
5    6  106
6    7  107
7    8  108
8    9  109
9   10  110
10  11  111
11  12  112
12  13  113
13  14  114
14  15  115
15  16  116
16  17  117
17  18  118
18  19  119

更好的方法是在系列级别更改类型:

for col in df.columns:
    if df[col].dtype == np.float64:
        df[col] = df[col].astype('int')

print(df)

     A    B
0    1  101
1    2  102
2    3  103
3    4  104
4    5  105
5    6  106
6    7  107
7    8  108
8    9  109
9   10  110
10  11  111
11  12  112
12  13  113
13  14  114
14  15  115
15  16  116
16  17  117
17  18  118
18  19  119

【讨论】:

【参考方案3】:

试试这个:

column_types = dict(df.dtypes)
for column in df.columns:
    if column_types[column] == 'float64':
        df[column] = df[column].astype('int')
        df[column] = df[column].apply(lambda x: int(x))

【讨论】:

以上是关于将浮点数的数据框转换为熊猫中的整数?的主要内容,如果未能解决你的问题,请参考以下文章

将浮点数与数组中的值进行比较时,“TypeError:只能将整数标量数组转换为标量索引”

C# - 将浮点数转换为整数...并根据余数更改整数

将浮点数转换为字符串

将 pandas 数据框列标签从浮点数转换为整数

带有前缀的Python熊猫数据框字符串转换为浮点数

使用 iPhone 的 SIMD 浮点单元将浮点数转换为整数