【发布时间】:2019-03-23 20:58:00
【问题描述】:
我正在处理这个efw 数据框:
2 Year ISO_Code Countries INDEX Rank Quartile
3 2016 ALB Albania 7.54 34 1
4 2016 DZA Algeria 4.99 NaN 4
5 2016 AGO Angola 5.17 155 4
6 2016 ARG Argentina 4.84 160 NaN
7 2016 ARM Armenia 7.57 NaN 1
8 2016 AUS Australia 7.98 10 1
9 2016 AUT Austria 7.58 27 NaN
假设我想将Rank 和Quartile 列中的所有值转换为整数,如果它们不是NaN。我试过efw[["Year", "Rank", "Quartile"]].astype(int),但一直收到这个错误:ValueError: cannot convert float NaN to integer
有没有办法告诉 Python “跳过”NaN 值,只将其他值转换为 int?
【问题讨论】:
-
使用
isnull()方法添加过滤器。 -
感谢@Prune 的建议!这条线会是什么样子?
efw.insnull(efw[["Year", "Rank", "Quartile"]].astype(int))? -
efw[['Year', 'Rank', 'Quartile']].isnull()。或者,如果您想查看每列的 NaN 值总数,也可以使用sum。就像efw.isnull().sum() -
您当前的列 dtype 是什么?
-
它将在下一个版本的熊猫中出现。 pandas-docs.github.io/pandas-docs-travis/… 否则 np.nans 强制列为浮点数。