pythondataframe取整百_为什么python pandas dataframe会取整我的值?

I do not understand why pandas dataframe is rounding the values in my column where I divide the values of two other columns. I want the numbers in the new colums with two decimals, but the values are rounded. I have checked the dtypes of the columns and both are "float64".

import pandas as pd

import numpy as np

# CURRENT DIRECTORY

cd = os.path.dirname(os.getcwd())

# concatenate csv files

dfList = []

for root, dirs, files in os.walk(cd):

for fname in files:

if re.match("output_contigs_SCMgenes.csv", fname):

frame = pd.read_csv(os.path.join(root, fname))

dfList.append(frame)

df = pd.concat(dfList)

#replace nan in SCM column with 0

df['SCM'].fillna(0, inplace=True)

#add column with genes/SCM

df['genes/SCM'] = df['genes']/df['SCM']

The output is as follows:

genome contig genes SCM genes/SCM

0 20900 48 1 0 inf

1 20900 37 130 103 1

2 20900 35 1 1 1

3 20900 1 79 66 1

4 20900 66 5 3 2

But I want that my last column does not contain rounded values, but values with at least 2 decimals.

解决方案

I could reproduce this behaviour by setting the pd.options.display.precision to 0:

In [4]: df['genes/SCM'] = df['genes']/df['SCM']

In [5]: df

Out[5]:

genome contig genes SCM genes/SCM

0 20900 48 1 0 inf

1 20900 37 130 103 1.262136

2 20900 35 1 1 1.000000

3 20900 1 79 66 1.196970

4 20900 66 5 3 1.666667

In [6]: pd.options.display.precision = 0

In [7]: df

Out[7]:

genome contig genes SCM genes/SCM

0 20900 48 1 0 inf

1 20900 37 130 103 1

2 20900 35 1 1 1

3 20900 1 79 66 1

4 20900 66 5 3 2

Check your Pandas & Numpy options

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值