首页 > 解决方案 > 如何将特定的熊猫数据框项目组合成一个项目

问题描述

我编写了代码来从 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

我没有找到正确的工具/代码来做到这一点。请帮忙!

标签: pythonpandas

解决方案


有人在这里获得了类似的东西(在一个组中连接

但是您还需要创建一个虚拟索引,您可以将分组应用于,在这种情况下,前两个字符的子字符串。如果您想要在组上有所不同,您可以修改此子字符串

#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!


推荐阅读