如何删除pandas中的小数点

Ama*_*ani 18 python pandas

我有一个pandas数据框,df,看起来像这样:

Cut-off             <=35   >35                   
Calcium              0.0   1.0
Copper               1.0   0.0
Helium               0.0   8.0
Hydrogen             0.0   1.0
Run Code Online (Sandbox Code Playgroud)

如何删除小数点,以便数据框如下所示:

Cut-off             <= 35  > 35                   
Calcium              0     1
Copper               1     0
Helium               0     8
Hydrogen             0     1
Run Code Online (Sandbox Code Playgroud)

我试过df.round(0)没有成功.

Ale*_*der 28

你有几个选择......

1)将所有内容转换为整数.

df.astype(int)
          <=35  >35
Cut-off            
Calcium      0    1
Copper       1    0
Helium       0    8
Hydrogen     0    1
Run Code Online (Sandbox Code Playgroud)

2)使用round:

>>> df.round()
          <=35  >35
Cut-off            
Calcium      0    1
Copper       1    0
Helium       0    8
Hydrogen     0    1
Run Code Online (Sandbox Code Playgroud)

但并不总是很棒......

>>> (df - .2).round()
          <=35  >35
Cut-off            
Calcium     -0    1
Copper       1   -0
Helium      -0    8
Hydrogen    -0    1
Run Code Online (Sandbox Code Playgroud)

3)更改Pandas中的显示精度选项.

pd.set_option('precision', 0)

>>> df
          <=35  >35
Cut-off            
Calcium      0    1
Copper       1    0
Helium       0    8
Hydrogen     0    1 
Run Code Online (Sandbox Code Playgroud)

  • @alexander 如何将这些方法中的任何一种应用于某一特定列?可不可能是?`df["&gt;35"].round()` (3认同)

joe*_*lom 6

从pandas 0.17.1开始,您可以通过修改特定数据框的样式而不是设置全局选项来设置显示的数字精度:

import pandas as pd
import numpy as np

np.random.seed(24)
df = pd.DataFrame(np.random.randn(5, 3), columns=list('ABC'))
df 
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

df.style.set_precision(2)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

也可以应用列特定的样式

df.style.format({
    'A': '{:,.1f}'.format,
    'B': '{:,.3f}'.format,
})
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明