这是我的小样本数据框:
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()
确实存在,他们可以完成工作,但是考虑到性能,我也在寻找一种矢量化的方法来实现这一目标。因此,我更喜欢熊猫字符串方法。当然,如果没有任何这样的字符串方法可以实现我的目标,那么我将很乐意接受最佳答案。
答案 0 :(得分:2)
您可以使用df.round()方法。
df.round(10)
df.round({'Col_1':10,'Col_3':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