python - 如何将特定的熊猫数据框项目组合成一个项目
问题描述
我编写了代码来从 PDF 中提取首字母缩写词和其他关键词以创建词汇表列表。我删除了重复项并按字母顺序排序并创建了一个熊猫数据框。
该数据框的一部分(称为gloss_of_terms1)如下所示:
Acronyms/Abbrev
0 EMP
1 EFT
2 FCF
3 FY14
4 FY15
5 FY16
6 GDN
7 GP
我实际上想编写一些代码来将 FY14、FY15、FY16 项目(用空格分隔)分组到一行中,并且生成的数据框如下所示:
Acronyms/Abbrev
0 EMP
1 EFT
2 FCF
3 FY14 FY15 FY16
4 GDN
5 GP
我没有找到正确的工具/代码来做到这一点。请帮忙!
解决方案
有人在这里获得了类似的东西(在一个组中连接)
但是您还需要创建一个虚拟索引,您可以将分组应用于,在这种情况下,前两个字符的子字符串。如果您想要在组上有所不同,您可以修改此子字符串
#Pandas library
import pandas as pd
#Create the dataset
df=pd.DataFrame({'Abbrev':['EMP','EFT','FCF','FY14','FY15','FY16','GDN','GP']})
#Dummy index with the substring (slice) to compare
df['ix']=df['Abbrev'].str.slice(0,2)
#Groupby concatenating the result
df=df.groupby(['ix'])['Abbrev'].apply(lambda x: ','.join(x)).reset_index()
#Drop the dummy index
df=df.drop(['ix'], axis=1)
#Show result
df
例如,如果您希望在匹配 FY 的前两个字母上有一个 IF 条件,您可以将第 6 行(创建 IX 的位置)替换为:
#Dummy index with the slice to compare
df['ix']=df['Abbrev'].apply(lambda x: x[0:2] if x[0:2]=='FY' else x)
希望对您有所帮助,欢迎来到 Stack Overflow!
推荐阅读
- java - 在 Linux 上的 Spring Boot 中使用 JNA 加载 .so 文件的问题
- javascript - Firebase 云功能在事务中创建文档并使用它来更新另一个文档
- java - 如何从 REST API 战争中访问主应用程序 WAR 中使用的远程 ejb
- java - 将自己的应用程序添加到 whatsapp 音频选择
- r - 如何在注释函数中使用表达式 enquo()
- python - python浮动到没有点的指数中的字符串
- ruby-on-rails - 将www url重定向到rails中的非www url
- xml - 使用 XPath 从 Postgres XML 列中提取数据
- symfony - 升级到 symfony 3.4 后访问 js 和 css
- php - 在 Bitnami WAPP Postgresql 上运行 laravel