You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pandas中使用mask后round()方法对指定列不生效的问题

问题原因及解决方法

为什么第三列没被round处理?

你用mask把小于3的值替换成空字符串后,l2这个Series的数据类型从float变成了object(因为列里同时存在数值和字符串),而pandas的round()方法只对数值类型的列生效,所以第三列不会被处理。

解决办法

方法1:用NaN代替空字符串(推荐,保持数值类型)

把空字符串换成numpy的NaN,这样列还是数值类型,round()就能正常处理:

import pandas as pd
import numpy as np

l = pd.DataFrame([[1.111, 2.222], [3.333, 4.444], [5.555, 1.111], [2.222, 3.333]])
l2 = pd.Series([3.333, 4.444, 1.111, 3.333, 6.666])
# 替换为NaN而非空字符串
l2.mask(l2 < 3, np.nan, inplace=True)
l['test'] = l2
# 所有列都会被保留2位小数
result = l.round(2)
print(result)

方法2:保留空字符串显示(先处理数值再转字符串)

如果必须显示空字符串,可以先对数值部分round,再把NaN转成空字符串:

import pandas as pd
import numpy as np

l = pd.DataFrame([[1.111, 2.222], [3.333, 4.444], [5.555, 1.111], [2.222, 3.333]])
l2 = pd.Series([3.333, 4.444, 1.111, 3.333, 6.666])
# 先替换为NaN,round后再转成空字符串
l2_processed = l2.mask(l2 < 3, np.nan).round(2).fillna('')
l['test'] = l2_processed
print(l)

内容的提问来源于stack exchange,提问作者Mockup Dungeon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 18:05:17