Python 如何在同样包含Float number和Nan或None值的列中舍入浮点值?
在DF中,我有一列包含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:
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”是否是一个具有多个列的数据帧吗?