问题设置
假设给出了以下数据框。
ID category
223 MMO
223 Game
444 Finance
360 Reading
360 Book
此数据框有一个ID
列,并且与category
相关联。请注意,相同的ID
可以有多个类别。
我的目标是创建一个新列,其中包含给定ID
的所有可能类别的串联。这意味着:
category
列ID
行输出看起来像这样。
ID category
223 MMO_Game
444 Finance
360 Reading_Book
尝试解决方案
我的过程是先创建一个groupby变量,将category
分组为ID
。
groupby_ID = df['category'].groupby(df['ID'])
现在我可以尝试迭代分组数据并连接字符串。
for ID, category in groupby_appID:
我不知道如何继续这一点。一些指示将非常感谢!
答案 0 :(得分:4)
您可以在ID上groupby
,然后将join
应用于所需的分隔符:
In [142]:
df.groupby('ID')['category'].apply('_'.join)
Out[142]:
ID
223 MMO_Game
360 Reading_Book
444 Finance
Name: category, dtype: object
要获得准确的所需输出,您可以使用reset_index
参数调用name
:
In [145]:
df.groupby('ID')['category'].apply('_'.join).reset_index(name='category')
Out[145]:
ID category
0 223 MMO_Game
1 360 Reading_Book
2 444 Finance