python - Pandas 整数过滤
问题描述
我使用我创建的函数制作了一个数据框
data = generate_xml()
然后,我根据列名制作数据框的子集,在本例中称为 WalmartIDS 和 ASINS。下面也是数据框的示例
walmartIDS = data.loc[:,['WalmartIDS','ASINS']]
>>
WalmartIDS ASINS
602 20511489 B077BS6737
603 10311487 B077BMHVG7
604 10311302 B077BRTYCS
605 152381151 B077YW9PTQ
606 The-Holiday-Aisle-Projection-Kaleidoscope-Spider-Airblown-Inflatable- Halloween-Decoration-THDA5581.html B076CNN6K5
607 51409868 B0756DMVSC
608 51410962 B0756FKLCV
609 51411020 B0756F3F6J
610 51411529 B0756FDM74
611 915505165 B076W25SDZ
612 400796633 B076VM75ZF
如您所见,有时不良数据会进入 WalmartIDS 列。因此,我想通过删除新创建的 walmartIDS 数据框中的所有行来过滤掉它,其中 WalmartIDS 列包含整数以外的字符。我不想更改数据框的数据版本,因为它是原始数据。
walmartIDS[walmartIDS.WalmartIDS != '^[-+]?[0-9]+$']
但是,上面的解决方案似乎没有做任何事情,实际上我仍然可以看到坏数据(在示例中是第 606 行),它应该被删除。
这样做的正确方法是什么?
解决方案
制作副本,转换为数字,删除 na:
测试数据:
data = StringIO("""
Walmart IDS ASINS
602 20511489 B077BS6737
603 10311487 B077BMHVG7
604 10311302 B077BRTYCS
605 152381151 B077YW9PTQ
606 The-Holiday-Aisle-Projection-Kaleidoscope-Spider-Airblown-Inflatable-Halloween-Decoration-THDA5581.html B076CNN6K5
607 51409868 B0756DMVSC
608 51410962 B0756FKLCV
609 51411020 B0756F3F6J
610 51411529 B0756FDM74
611 915505165 B076W25SDZ
612 400796633 B076VM75ZF
""")
创建 df 并制作副本:
df = pd.read_table(data, delim_whitespace=True)
df2 = df
将 IDS 转换为数字并用 na 删除行:
df2['IDS'] = pd.to_numeric(df2['IDS'], errors="coerce")
df2.dropna(how="any", inplace=True)
print(df2)
Walmart IDS ASINS
0 602 20511489.0 B077BS6737
1 603 10311487.0 B077BMHVG7
2 604 10311302.0 B077BRTYCS
3 605 152381151.0 B077YW9PTQ
5 607 51409868.0 B0756DMVSC
6 608 51410962.0 B0756FKLCV
7 609 51411020.0 B0756F3F6J
8 610 51411529.0 B0756FDM74
9 611 915505165.0 B076W25SDZ
10 612 400796633.0 B076VM75ZF
推荐阅读
- javascript - 通过 URL 参数设置 cookie 并在整个网站上保持其值
- excel - EXCEL VBA 运行时错误 91 - 未设置对象
- r - 使用 R `bookdown::gitbook` 我可以将数字居中但不能将标题居中吗?
- node.js - 使用 Yarn 启动项目时,'C:\Users...' 不被识别为内部命令
- node.js - 如何以编程方式在 pancakeswap 上获得代币的买卖税
- java - spring-shell 书籍和资源
- stripe-payments - 使用 Stripe CLI 通过终端删除错误的自定义帐户
- python - ImportError:无法从“pymatgen”(未知位置)导入名称“分子”
- python - 为什么当我按 F11(步入)时 VS Code 调试器不打开库模块?
- events - SwiftUI 在失去焦点时运行函数 TextField