如何基于字典使用不区分大小写匹配对pandas数据帧进行子集划分

2024-04-29 13:01:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含各种产品及其描述的数据框,如下图所示:

enter image description here

我有一个dict,它包含必须根据其进行筛选的键值对:

听写

{'brand': 'Dexter', 'color': 'brown', 'product': 'footwear', 'size': '32'}

可以看出dict和dataframe可能包含不同情况下的值,因此我需要在这里进行不区分大小写的匹配。也可能有一些列是数字的,正常匹配将对其进行处理。 有人能帮我吗。在


Tags: 数据dataframesize产品情况数字productdict
1条回答
网友
1楼 · 发布于 2024-04-29 13:01:57

上面的方法适用于字符串匹配。还可以进一步更改final语句以匹配整数。在

import numpy as np
import pandas as pd
import re

df = pd.DataFrame({'Product': np.array(['Footwear' for i in range(4)]), 'Category': np.array(['Women' for i in range(4)]), 'Size': np.array([7, 7, 7, 8]), 'Color': np.array(['black', 'brown', 'blue', 'black'])})

ent_dict = {'Category': 'Women', 'Color': 'black', 'Product': 'Footwear'}
values = [i for i in ent_dict.values()]
columns = [df.filter(regex=re.compile(i, re.IGNORECASE)).columns[0] for i in ent_dict]

df[eval(" & ".join(["(df['{0}'] == {1})".format(col, repr(cond)) 
            for col, cond in zip(columns, values)]))]

不区分大小写的搜索可以使用DataFrame对象的str.contains来完成。在

^{pr2}$

相关问题 更多 >