python - 有没有办法识别浮动 NaN,然后在 pandas 数据框中替换它们?
问题描述
我试图在我的数据框中识别 NaN,后来删除了它们,因为它们对于这个特定问题不是必需的。虽然现在在执行另一个操作时,我遇到了一个叫做“floating NaN”的东西,因此我无法执行这个操作。
transaction id
54789
56334
56233
58789
C57832
C53347
C58963
C58797
我正在执行的操作涉及识别该列中的整数和字符串,并添加一个新列,如果是整数,则该列将具有“Ordered”,如果是字符串则具有“Cancelled”。对于此操作,我使用了以下代码。
data_clean['transaction status'] = data_clean['transaction id'].str.isnumeric().astype(int)
上面的代码行会给我的输出为
transaction id transaction status
0 654656 1
1 546466 1
2 654646 1
3 844886 1
4 C846464 0
5 C384448 0
6 C468788 0
7 C873316 0
对于这行代码,我收到以下错误。
cannot convert float NaN to integer
直到此时我才知道浮动 NaN 直到此时才存在。我如何检测它们?我第一次尝试跑步
data_clean['trasaction id'].isnull().any()
它来了
False
如果上面的代码行无法检测到,我如何找到这样的浮动 NaN?
解决方案
这应该做你需要的:
data_clean['transaction status'] = pd.notna(pd.to_numeric(data_clean['transaction id', errors='coerce')).astype(int)
首先,pd.to_numeric
将列转换为数字格式。因为当事务被取消时,行中有字符串,所以这些字符串会作为错误被拾取。设置errors=coerce
将为您提供这些行的 NaN。
其次,使用pd.notna
,NaN 设置为 False,数字设置为 True。
第三,astype(int)
将 True/False 转换为 1/0。
推荐阅读
- flutter - 变换会在颤动中扭曲容器的边界半径
- flutter - 在 Dart / Flutter 中动态访问类的属性
- android - RecyclerView 中的 3D 数组添加图像、标题和描述以查看
- swift - 在 NSImageView 之上添加 CATextLayer
- r - 根据多个条件删除重复项,包括最大值。日期
- javascript - Leaflet Snap - 使用 Leaflet Draw 绘图时无法捕捉
- google-maps - 谷歌地图在不同的缩放级别设置数据层的可见性
- python - 在属性设置器中为引发的异常设置单元测试
- javascript - 在 JavaScript 中替换数组中的最后两项
- python - apache lib-wsgi 403 禁止