问题设置
假设我得到了下面的数据帧。
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
尝试解决方案
我的想法是首先创建一个group by变量,将
category
按ID
分组。groupby_ID = df['category'].groupby(df['ID'])
现在我可以尝试遍历分组数据并连接字符串。
for ID, category in groupby_appID:
我不知道现在该怎么办。一些指针将非常感谢!
最佳答案
您可以在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
关于python - 连接其他唯一列的所有可能的列值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38476096/