使用Python将DataFrame指定列浮点值向上取整为整数的问题咨询
问题解决方法
你现有代码存在两个问题:
- 列名选择的写法错误:
list("a site", "b site", "c site")属于非法写法,list构造方法不支持传入多个独立字符串参数,直接定义列表存储列名即可 - 取整逻辑不符合需求:
astype(int)会直接截断小数部分做向下取整,无法实现你需要的取整效果
可行方案(匹配样例输出)
你给出的样例输出符合向上取整的逻辑(所有带小数的数值都向更大的整数取整),可以借助numpy的向量化ceil方法实现,代码如下:
# 若未导入numpy需先执行导入 import numpy as np # 定义要处理的列 target_cols = ["a site", "b site", "c site"] # 先向上取整再转整数类型 df[target_cols] = np.ceil(df[target_cols]).astype(int)
执行后即可得到你期望的转换结果:
| location | a site | b site | c site |
|---|---|---|---|
| aa | 5 | 2 | 1 |
| bb | 6 | 7 | 1 |
其他可选取整逻辑
如果后续需要调整取整规则,可以替换对应的方法:
- 四舍五入取整:将
np.ceil替换为np.round - 向下取整(和原astype效果一致):将
np.ceil替换为np.floor
内容的提问来源于stack exchange,提问作者Lynn
相关产品推荐
相关产品推荐

