pandas去除浮点数
时间: 2025-03-06 09:44:48 浏览: 44
### 如何使用 Pandas 将浮点数转换为整数
当遇到从 MySQL 中读取的数据列被识别成浮点型而非预期的整型时,可以通过几种方式解决这个问题。一种直接的方式是在加载数据后利用 Pandas 的功能将特定列由浮点类型转换回整数类型。
对于存在 `.0` 这样的情况,即实际上代表的是整数值却被存储为了浮点形式的情况,可以采用如下方法之一:
#### 方法一:使用 astype(int)
最简单的方法是调用 `astype()` 函数并指定目标类型为 int。需要注意这样做前应该确认所有值确实都是表示整数的浮点数(比如 1.0, 2.0),因为强制转换可能导致数据丢失或异常[^1]。
```python
import pandas as pd
df['to_nlc'] = df['to_nlc'].astype('Int64')
```
这里选择了 `'Int64'` 类型而不是普通的 Python 整形 (`int`) 或者 NumPy 的整形 ('int64'),这是因为前者能够更好地处理缺失值 (NA),而后者则不行,在有 NA 值的情况下尝试转为常规整型将会抛出错误[^4]。
#### 方法二:先 round 后 astype
考虑到原始数据可能存在轻微偏差(例如由于计算误差造成的接近于某个整数但不完全等于该整数的情形),可以在转换之前应用 `round()` 来消除这些微不足道的小数位差异[^2]。
```python
df['to_nlc'] = df['to_nlc'].round().astype('Int64')
```
这种方法有助于减少因浮点运算带来的潜在问题,并确保最终得到的结果确实是合理的整数值。
#### 方法三:自定义转换逻辑
如果某些情况下希望更精细地控制如何处理非精确匹配或是想要保留原样那些不是严格意义上的整数,则可以根据具体需求编写更加复杂的映射规则来实现这一点。
```python
def custom_convert(x):
try:
return int(float(x)) if str(x).endswith('.0') else x
except ValueError:
return None
df['to_nlc'] = df['to_nlc'].apply(custom_convert)
```
这段代码仅对结尾为 '.0' 的字符串执行转换操作;其他任何不符合条件的内容都将保持不变或者返回 `None` 表示无效输入[^3]。
阅读全文
相关推荐


















