如何使用 pandas 数据框系列列元素搜索字典值列表
how to search list of dictionary values with pandas dataframe series column elements
我有一个字典和数据框列,其中包含一系列字符串类型的列表元素。
如果字典项目中的值与任何应该用项目名称标记的字符串元素相匹配
例如:输入
text_column=[['grapes','are','good','for','health'],['banana','is','not','good','for','health'],
['apple','keeps','the','doctor','away'],['automobile','industry','is','in','top','position','from','recent','times']]
dict={ "fruit_name":['apple','grapes','lemon','cherry'],
"profession":['health','manufacturing','automobiles']
}
输出:
1) fruit_name
2) fruit_name
3) profession
4) profession
您可以反转 dict
以在 'text_column'
中创建 reverse_dct
和 map
单词到 'word_type'
(顺便说一下, dict
是Python 中的字典构造函数,不要将变量命名为 dict
).
reverse_dct = {}
for k,v in dct.items():
for i in v:
reverse_dct[i] = k
df = pd.DataFrame({'text_column':text_column})
df['word_type'] = df['text_column'].explode().map(reverse_dct).dropna().groupby(level=0).apply(','.join)
输出:
text_column word_type
0 [grapes, are, good, for, health] fruit_name,profession
1 [banana, is, not, good, for, health] profession
2 [apple, keeps, the, doctor, away] fruit_name
3 [automobile, industry, is, in, top, position, ... NaN
请注意,最后一行没有类型,因为您在 dict
中有 automobiles
,但在 text_column
中有 automobile
。如果您希望您的程序识别出它们是相同的,则需要标准化拼写。
我有一个字典和数据框列,其中包含一系列字符串类型的列表元素。
如果字典项目中的值与任何应该用项目名称标记的字符串元素相匹配
例如:输入
text_column=[['grapes','are','good','for','health'],['banana','is','not','good','for','health'],
['apple','keeps','the','doctor','away'],['automobile','industry','is','in','top','position','from','recent','times']]
dict={ "fruit_name":['apple','grapes','lemon','cherry'],
"profession":['health','manufacturing','automobiles']
}
输出:
1) fruit_name
2) fruit_name
3) profession
4) profession
您可以反转 dict
以在 'text_column'
中创建 reverse_dct
和 map
单词到 'word_type'
(顺便说一下, dict
是Python 中的字典构造函数,不要将变量命名为 dict
).
reverse_dct = {}
for k,v in dct.items():
for i in v:
reverse_dct[i] = k
df = pd.DataFrame({'text_column':text_column})
df['word_type'] = df['text_column'].explode().map(reverse_dct).dropna().groupby(level=0).apply(','.join)
输出:
text_column word_type
0 [grapes, are, good, for, health] fruit_name,profession
1 [banana, is, not, good, for, health] profession
2 [apple, keeps, the, doctor, away] fruit_name
3 [automobile, industry, is, in, top, position, ... NaN
请注意,最后一行没有类型,因为您在 dict
中有 automobiles
,但在 text_column
中有 automobile
。如果您希望您的程序识别出它们是相同的,则需要标准化拼写。