圆形pandas.DataFrame的正确方法?

Mic*_*ael 11 python rounding pandas

我想要回合pandas.DataFrame.

这是我到目前为止所尝试的:

import pandas as pd
data = pd.DataFrame([1.4,2.5,3.8,4.4,5.6],[6.2,7.6,8.8,9.1,0])
print(round(data))
Run Code Online (Sandbox Code Playgroud)

但是当我运行此代码时,我收到以下错误:

Traceback (most recent call last):
  File "C:\Users\*****\Documents\*****\******\****.py", line 3, in <module>
    print(round(data))
TypeError: type DataFrame doesn't define __round__ method
Run Code Online (Sandbox Code Playgroud)

圆的正确方法是pandas.DataFrame什么?

beh*_*uri 14

首先,您可能想要更改数据框的定义,例如:

data = pd.DataFrame([[1.4,2.5,3.8,4.4,5.6],[6.2,7.6,8.8,9.1,0]]).T
Run Code Online (Sandbox Code Playgroud)

结果如下:

     0    1
0  1.4  6.2
1  2.5  7.6
2  3.8  8.8
3  4.4  9.1
4  5.6  0.0
Run Code Online (Sandbox Code Playgroud)

要么:

data = pd.DataFrame({'A':[1.4,2.5,3.8,4.4,5.6],'B':[6.2,7.6,8.8,9.1,0]})
Run Code Online (Sandbox Code Playgroud)

这样你就得到两列,否则另一个列表被选为索引; 然后:

data.apply(pd.Series.round)
Run Code Online (Sandbox Code Playgroud)

要么

import numpy as np
data.apply(np.round)
Run Code Online (Sandbox Code Playgroud)

  • 这是最好的解决方案:`np.round(data,decimals = 0)` (9认同)
  • 你创建数据框的方式,另一列是索引,pandas将函数应用于列而不是索引 (2认同)

Vin*_*aes 5

从熊猫 0.17.0 开始,您可以使用

DataFrame.round(decimals=0, *args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

如果要将数据四舍五入为 2 位小数,请执行以下操作:

data.round(2)
Run Code Online (Sandbox Code Playgroud)

更多信息:http : //pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.round.html