python-3.x - 让 PANDAS 识别 DF 值内的 PATTERN
问题描述
我将 Python 3.9 与 Pandas 和 Numpy 一起使用。
每天我都会收到一份来自我工作的公司的订单的 df。每天,这个 df 都来自一个我不懂语言的不同国家,而且这个数据框没有模式。在这种情况下,我不知道列名和索引是什么。
我只知道订单遵循一种模式:3 个数字 + 2 个字母,例如 000AA、149KL、555EE 等。
我看到使用字符串是可能的,但是使用 pandas 我只是找到了需要列名的命令。
df.column_name.str.contains(pat=r'\d\d\d\w\w', regex=True)
如果我能找到只有这种模式的列,我就知道订单列是什么。
解决方案
我从一个合成数据集开始
import pandas
df = pandas.DataFrame([{'a':3,'b':4,'c':'222BB','d':'2asf'},
{'a':2,'b':1,'c':'111AA','d':'942'}])
然后我循环浏览每一列。如果数据类型是object
,那么我测试系列中的所有元素是否与正则表达式匹配
for column_id in df.columns:
if df[column_id].dtype=='object':
if all(df[column_id].str.contains(pat=r'\d\d\d\w\w', regex=True)):
print("matching column:",column_id)
推荐阅读
- android - RecyclerView 在 Android Studio 3.5.3 中不显示项目
- javascript - 100% 的 Jest 代码覆盖率,在 try-catch 和 throw 结构中存在未知错误
- python - 打印从 1 到 100 的所有数字列表,跳过可被 3 或 5 整除的数字
- php - 尝试使用 destroy 函数执行一些删除操作时说 Error:Missing required parameters for Route Laravel 6.0 我该如何修复它
- office365 - /mailFolders/inbox/messageRules HTTP 503
- python - 狮身人面像错误;缺少 PocketSphinx 模块:确保正确设置了 PocketSphinx
- heroku - 为什么我的域名可以使用,但 Heroku 应用程序的地址栏中没有显示?
- sql - 句子SQL中这两点的含义
- python - 如何在 Python 中获得非标准二次方程的正则表达式匹配?
- r - 在R中的绘图上添加海岸线