Python 如何获取系列小数点后的最大位数

Python 如何获取系列小数点后的最大位数,python,pandas,dataframe,Python,Pandas,Dataframe,我从csv文件中读取了一系列精度不同的浮点值,并需要小数点后的位数。所以,对于123.4567,我想得到4 我设法获得了随机生成的数字的位数,如下所示: df=pd.系列(np.随机.兰德(100)*1000) 精度\数字=(df-df.astype(int)).astype(str.str.split(“.”,expand=True)[1].str.len().max() 但是,如果我使用pd.read_csv从磁盘读取数据,其中一些行是空的(因此填充了nan),则会出现以下错误: 回溯

我从csv文件中读取了一系列精度不同的浮点值,并需要小数点后的位数。所以,对于123.4567,我想得到4

我设法获得了随机生成的数字的位数,如下所示:


df=pd.系列(np.随机.兰德(100)*1000)
精度\数字=(df-df.astype(int)).astype(str.str.split(“.”,expand=True)[1].str.len().max()

但是,如果我使用pd.read_csv从磁盘读取数据,其中一些行是空的(因此填充了nan),则会出现以下错误:

回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/home/tgamauf/workspace/mostary sydan/venv/lib/python3.6/site packages/pandas/core/generic.py”,第4376行,位于__
返回对象。\uuuGetAttribute(self,name)
AttributeError:“DataFrame”对象没有属性“str”

这里出了什么问题?
有没有更好的方法来满足我的需要?

例如,您有以下数据,其中包含
NaN

df=pd.Series([1.111,2.2,3.33333,np.nan])


pd.read\u csv()
通常返回一个
DataFrame
对象。使用
.str
返回的
StringMethods
对象仅为
系列
对象定义。尝试使用
pd.read\u csv('your\u data.csv',squeak=True)
让它返回一个
系列
对象;然后,您将能够使用
.str

带有
df-df.astype(int)
的版本对我来说无法正常工作,只需应用相同的
str.split
即可:

def get_max_decimal_length(df):
    """Get the maximum length of the fractional part of the values or None if no values present."""
    values = df.dropna()
    return None if values.empty else values.astype(str).str.split(".", expand=True)[1].str.len().max()

您可以预先填充缺少的值missing
fillna
以防止错误发生,不是吗?
squeak=True
修复了该问题,但我注意到,如果加载整个数据帧,然后选择单个列(无论如何我都需要这样做),它甚至不适用。在这种情况下,它实际上是开箱即用的。无论如何,谢谢你,因为这确实回答了我提出的问题!
.reindex(idx)
在这里做什么?如果使用.max()或.reindex(idx).max(),则当前数据集的结果相同。
def get_max_decimal_length(df):
    """Get the maximum length of the fractional part of the values or None if no values present."""
    values = df.dropna()
    return None if values.empty else values.astype(str).str.split(".", expand=True)[1].str.len().max()