首页 > 解决方案 > 让 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)

如果我能找到只有这种模式的列,我就知道订单列是什么。

标签: python-3.xpandasdataframe

解决方案


我从一个合成数据集开始

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)

推荐阅读