Pandas 数据框分组并组合多个行值

bla*_*lah 5 python pandas

如果标题不清楚,我深表歉意,但我很难表达这个问题。如果我只是展示我想做的事情,那可能是最好的。

一些上下文:我解析了一个文档的名称,并将每个名称与它出现的页码一起存储。我需要转换 DataFrame 以便每个名称都有一行,页码列组合了名称出现的所有页面。我认为这需要 GroupBy,但我不完全确定。

我目前的数据:

data = np.array([['John', 'Smith', 1], ['John', 'Smith', 7], ['Eric', 'Adams', 9], ['Jane', 'Doe', 14], ['Jane', 'Doe', 16], ['John', 'Smith', 19]])

pd.DataFrame(data, columns=['FIRST_NM', 'LAST_NM', 'PAGE_NUM'])

  FIRST_NM LAST_NM PAGE_NUM
0     John   Smith        1
1     John   Smith        7
2     Eric   Adams        9
3     Jane     Doe       14
4     Jane     Doe       16
5     John   Smith       19
Run Code Online (Sandbox Code Playgroud)

所需的数据帧:

  FIRST_NM LAST_NM PAGE_NUM
0     John   Smith   1,7,19
1     Eric   Adams        9
2     Jane     Doe    14,16
Run Code Online (Sandbox Code Playgroud)

Mar*_*ius 6

您可以使用 groupby 执行此操作并应用:

df.groupby(['FIRST_NM', 'LAST_NM']).apply(lambda group: ','.join(group['PAGE_NUM']))
Out[23]: 
FIRST_NM  LAST_NM
Eric      Adams           9
Jane      Doe         14,16
John      Smith      1,7,19
dtype: object
Run Code Online (Sandbox Code Playgroud)