python - 基于同一数据框的另一列将缩写应用于数据框的列
问题描述
我在数据框中有两列,其中一列是类,另一列是描述。在描述中,我有一些缩写。我想根据类值扩展这些缩写。我有一个以类为键的字典,在值中我有另一个带有缩写及其完整形式的字典。由于这些缩写的含义因类别而异。例如:- 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]))
解决方案
输入数据:
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
推荐阅读
- informix - 在 Informix-Protocol 中解码 SQ_FETCHBLOB
- javascript - 如何在 html 页面中使用 serialport.on() 响应编写 if else 条件?
- java - SQL-Java:Prepared Statement 给出索引超出范围错误
- windows - 舀安装的 git bash:“Open Git Bash”在这里上下文菜单
- css - 如何沿同一垂直线对齐多个标记的内联块输入控件?
- d3.js - 使用d3.js时如何根据x轴修改路径的顺序
- c# - 计算非典型物体的宽度、高度和体积
- javascript - Ajax sumit 但什么也没发生
- angular - 如何使用 angular/typescript 从 firebase 获取数据并在 html 中显示
- angular - ngFor 正在从 ngFor 范围内复制 tbody 标签