Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在同样包含Float number和Nan或None值的列中舍入浮点值?_Python_Python 3.x_Pandas_Jupyter Notebook - Fatal编程技术网

Python 如何在同样包含Float number和Nan或None值的列中舍入浮点值?

Python 如何在同样包含Float number和Nan或None值的列中舍入浮点值?,python,python-3.x,pandas,jupyter-notebook,Python,Python 3.x,Pandas,Jupyter Notebook,在DF中,我有一列包含float、str、None和nan值 我只想舍入浮点值而不影响其他值。我尝试使用掩码只访问float值,但没有成功 如果解决方案可以使用本机pandas函数而不是迭代,我更愿意这样做 我的数据样本: index Column A Column B 1 57:24.1 98.67799997 2 57:24.1 58.67799997 3 57:

在DF中,我有一列包含
float
str
None
nan

我只想舍入
浮点值
而不影响其他值。我尝试使用掩码只访问
float
值,但没有成功

如果解决方案可以使用本机
pandas
函数而不是迭代,我更愿意这样做

我的数据样本:

 index      Column A         Column B   
 1          57:24.1          98.67799997
 2          57:24.1          58.67799997
 3          57:53.8          95.66000009
 4          358:23.4         210.68099999
 5          None             35.10
 6          25.06778         None
 7          99999.565656     Abc
 8          abc              None

这样如何-它将检查该值是否为浮点值,如果是,它将四舍五入为1,否则不执行任何操作:

df["Column B"].apply(lambda x: round(x,1) if isinstance(x,float) else x)
或者,如果要将此函数应用于数据帧中的每个单元格:

df.applymap(lambda x: round(x,1) if isinstance(x,float) else x)

另请参见:

试试这个怎么样。可能有点贵,但值得一试

df['Column B'] = [round(val,2) for val in df['column B'] if type(val)==float]

不幸的是,您建议的第一个解决方案返回了B列,但没有四舍五入&第二个解决方案返回了完整的DF,没有任何更改(未四舍五入)。请尝试将
float
替换为
np.float64
。基本上,它需要与数据帧中的浮点类型完全相同。您给出的第一个解决方案没有更改输出第二个解决方案返回我:AttributeError:“Series”对象没有属性“applymap”,我可以检查“df”是否是一个具有多个列的数据帧吗?