python - Pandas 字符串方法来处理小数位

标签 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' 和 'col3' 转换为十进制字符串(以便 '0.0002' 变为 '0.0002000000 ''8.333333333333333e-05'变为'0.0000833333''0.00014285714285714287'变为'0.0001428571')。实现这一目标的最 pythonic 方法是什么?

编辑1:

多加了一列以更好地表示我的小问题

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

最佳答案

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

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

df.round(10)

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

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

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

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

df.round(decimals)

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

关于python - Pandas 字符串方法来处理小数位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56866323/

相关文章:

python - 寻找一种更快的模糊字符串匹配方法

c++ - 连接字符和字符串文字

c++ - 如何在不向标准 Ubuntu 版本安装额外库的情况下在 C++ 中拆分字符串?

Javascript split 不是一个函数

python - python 中的在线 PCA

python - 在 Ubuntu 上使用 sao 安装 Tryton ERP

python - 如何在多个组合框的表格中链接两个组合框?

python - 如何按日志文件的信息对日志文件进行排序?

python-3.x - Python3 连接到雪花时出错:snowflake.connector.errors.OperationalError::Failed to execute :'SSLSocket' object has no attribute 'conn

python - 我的电报机器人出现 "SSL: CERTIFICATE_VERIFY_FAILED"错误