熊猫字符串方法来处理小数位

时间:2019-07-03 08:50:53

标签: python python-3.x string pandas decimal

这是我的小样本数据框:

import pandas as pd
import numpy as np

size = 10000

arr1 = np.tile([1/5000,1/12000,1/7000], (size,1))

df = pd.DataFrame(arr1, columns = ['col1','col2','col3'])
df[['col1','col2','col3']] = df[['col1', 'col2', 'col3']].astype(str)

我想使用pandas字符串方法将'col1', ' col2' and 'col3'转换为10个小数位数的字符串(这样'0.0002' becomes '0.0002000000''8.333333333333333e-05' becomes '0.0000833333''0.00014285714285714287' becomes '0.0001428571')。 pythonic的方法来实现这一目标?

EDIT1:

添加了另一列以更好地代表我的小问题

EDIT2:我想提一下,我知道df.apply()df.applymap()确实存在,他们可以完成工作,但是考虑到性能,我也在寻找一种矢量化的方法来实现这一目标。因此,我更喜欢熊猫字符串方法。当然,如果没有任何这样的字符串方法可以实现我的目标,那么我将很乐意接受最佳答案。

1 个答案:

答案 0 :(得分:2)

您可以使用df.round()方法。

  • 如果您希望将所有列值四舍五入到小数点后10位:
  

df.round(10)

  • 如果只希望将选定的列值四舍五入到10个小数点:
  

df.round({'Col_1':10,'Col_3':10})

  • 如果要将一系列列值四舍五入到小数点后10位:
  

小数= pd.Series([10,10,10],index = ['Col_1','Col_2','Col_3'])

     

df.round(小数)

有关更多详细信息,您可以访问以下示例链接:https://pandas.pydata.org/pandasdocs/version/0.22/generated/pandas.DataFrame.round.html