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

mat*_*guy 5 python string decimal python-3.x pandas

这是我的小示例数据框:

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)
Run Code Online (Sandbox Code Playgroud)

我想用大熊猫字符串的方法来转换'col1', ' col2' and 'col3'到10十进制的地方串(这样'0.0002' becomes '0.0002000000''8.333333333333333e-05' becomes '0.0000833333''0.00014285714285714287' becomes '0.0001428571')什么是最Python的方式来实现这一目标?

编辑1:

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

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

B-s*_*han 2

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

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

df.round(10)

  • 如果您只想将选定的列值四舍五入到小数点后 10 位:

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

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

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

df.round(小数)

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