簡體   English   中英

將浮點數的 dataframe 轉換為 pandas 中的整數?

[英]Convert dataframe of floats to integers in pandas?

如何將我的 pandas dataframe 的每個數字元素轉換為 integer? 我沒有在網上看到任何關於如何做到這一點的文檔,鑒於 Pandas 如此受歡迎,這令人驚訝......

如果你有一個整數數據框,直接使用astype即可。

df.astype(int)

如果沒有,請先使用select_dtypes到 select 數字列。

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

你可以使用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

嘗試這個:

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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM