问题设置
假设我得到了下面的数据帧。

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变量,将categoryID分组。
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/

10-15 17:47
查看更多