python - 将 float 转换为 int 处理 Nan 值
问题描述
我有一个csv,如下所示:
db,date,RequestCount,ScheduledCount,PerformedCount,Product
abc,2020-06-01 00:00:00.000,51,22,37,xyz
abc,2020-06-02 00:00:00.000,,11,19,xyz
abc,2020-06-03 00:00:00.000,52,20,36,xyz
abc,2020-06-04 00:00:00.000,37,12,17,xyz
abc,2020-06-05 00:00:00.000,57,23,39,xyz
abc,2020-06-08 00:00:00.000,37,13,28,xyz
abc,2020-06-09 00:00:00.000,48,16,31,xyz
abc,2020-06-10 00:00:00.000,60,24,40,xyz
abc,2020-06-11 00:00:00.000,35,11,,xyz
我正在用 pandas( pd.read_csv
) 阅读它。由于这里有两个NaN
,列RequestCount
和PerformedCount
被转换为float64
.
但我需要所有数字列都是 type integer
。
我怎样才能做到这一点?
我试过这个,
astype(int)
- 在南价值观上失败。
解决方案
如果您使用的是 pandas ≥1.0,则可以从新的可空整数类型中受益:
df['RequestCount'] = df['RequestCount'].astype('Int64')
注意。注意大写I
在Int64
输出:
db date RequestCount ScheduledCount PerformedCount Product
0 abc 2020-06-01 00:00:00.000 51 22 37.0 xyz
1 abc 2020-06-02 00:00:00.000 <NA> 11 19.0 xyz
2 abc 2020-06-03 00:00:00.000 52 20 36.0 xyz
3 abc 2020-06-04 00:00:00.000 37 12 17.0 xyz
4 abc 2020-06-05 00:00:00.000 57 23 39.0 xyz
5 abc 2020-06-08 00:00:00.000 37 13 28.0 xyz
6 abc 2020-06-09 00:00:00.000 48 16 31.0 xyz
7 abc 2020-06-10 00:00:00.000 60 24 40.0 xyz
8 abc 2020-06-11 00:00:00.000 35 11 NaN xyz
>>> df['RequestCount'].isna()
0 False
1 True
2 False
...
推荐阅读
- javascript - 如何根据 Jira 中的自定义字段仅在脚本用户选择器中显示特定组的用户?
- sql - Oracle 中是否有等效于 TRY_CONVERT() 的方法?
- python - json.dumps 编码多个字符串
- excel - 如何将函数插入我的代码块
- algorithm - 将 4 步 PCAM(福斯特方法)应用于并行算法设计的示例?
- python - 为什么使用 Jupyter Notebook 无法访问 Google Drive 文件夹中的文件?
- sql - SQL - 如何将超过 24 小时的时间转换为十进制
- java - 将包含对的 JSON 数组转换为点列表
- python - MD5 哈希 转到 Python
- ffmpeg - FFMPG Concat 两个视频质量问题