首页 > 解决方案 > 基于同一数据框的另一列将缩写应用于数据框的列

问题描述

我在数据框中有两列,其中一列是类,另一列是描述。在描述中,我有一些缩写。我想根据类值扩展这些缩写。我有一个以类为键的字典,在值中我有另一个带有缩写及其完整形式的字典。由于这些缩写的含义因类别而异。例如:- IT 可能意味着基于类别标签的以太信息传输或信息技术。

我尝试了 groupby,但无法将其恢复到原始数据框中。任何帮助深表感谢。谢谢

这就是我尝试的方式:

grouped = df.groupby('class')
for n,j in grouped:
    j['description'].str.split().apply(lambda x: ' '.join([abb[n].get(e, e) for e in x]))

例子

标签: pythonpandasnlppandas-groupbytext-classification

解决方案


输入数据:

abb = {'IT':{'SQL':'Structured Query Language', 'BLAH': 'blah blah'}, 'Sales':{'SQL':'Sales Qualified Lead'}}

data = [{'class':'IT', 'description':'SQL developer'},
        {'class':'IT', 'description':'SQL developer BLAH'},
        {'class':'Sales', 'description':'senior SQL'}]
df = pd.DataFrame(data)

 </p>

   class                                    description
0     IT            Structured Query Language developer
1     IT  Structured Query Language developer blah blah
2  Sales                    senior Sales Qualified Lead

代码:

df['description'] = (df.groupby('class', as_index=False)
                     .apply(lambda x: x['description'].str.replace('|'.join(abb[x.name].keys()),
                                                                   lambda m: abb[x.name][m.group(0)]
                                                                  )
                           ).reset_index(drop=True)
                    )

输出:

   class                                    description
0     IT            Structured Query Language developer
1     IT  Structured Query Language developer blah blah
2  Sales                    senior Sales Qualified Lead

推荐阅读