Python 基于另一列中的相同值组合dataframe列中的文本值

Python 基于另一列中的相同值组合dataframe列中的文本值,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,我有数据,可能有不同的人与同一条目关联 我需要将这两个条目合并在一起,注意上面有两个人 例如,数据可能看起来像: Name Share_ID value1 value2 value3 etc. Joe 0001 1 2 4 Ann 0002 2 5 2 Mel 0001 1 2 4 输出需要是: Name Share_ID value1 value2 value3 etc. Joe, Mel

我有数据,可能有不同的人与同一条目关联

我需要将这两个条目合并在一起,注意上面有两个人

例如,数据可能看起来像:

Name Share_ID value1 value2 value3 etc.
Joe  0001     1      2      4
Ann  0002     2      5      2
Mel  0001     1      2      4
输出需要是:

Name      Share_ID value1 value2 value3 etc.
Joe, Mel  0001     1      2      4
Ann       0002     2      5      2
我试着用groupby

df1.groupby(['Share\u ID'])['Name'].apply(','.join).reset\u index()
但我的结果是:

Share_ID Name
0001     Joe, Mel
0002     Ann
名称列组合正确,但我丢失了其他列。请注意,我不希望对其他列应用任何内容——Joe和Ann的记录是相同的


我认为我的方法是关闭的,但我不确定要使用什么函数。

从停止的地方开始,您可以将生成的数据集连接回初始数据帧:

# Find the merged name data set and rename the 'Name' column
names = df1.groupby(['Share_ID'])['Name'].apply(', '.join).reset_index().rename(columns={'Name':'Merged Name'})
# Join it to the original dataset
df1 = df1.merge(names, on='Share_ID')
# Drop the 'Name' column then drop duplicates.
df1 = df1.drop(columns=['Name']).drop_duplicates()

您可以获取获得的结果,将其与原始数据帧合并,并删除重复项:

pd.merge(df1.groupby(['Share_ID'])['Name'].apply(', '.join).reset_index(), df1, on='Share_ID').drop_duplicates(subset='Share_ID')

不使用分组依据中的
字段的任何特殊原因

df1.groupby(['Share_ID','value1', 'value2', 'value3'])['Name'].apply(', '.join).reset_index()

这将提供所需的输出。

您是否与groupby进行了核对?这是一个很好的解决方案;我将另一个标记为已接受,只是因为作为新用户,它对我来说更具可读性(因此,当我稍后查看我的代码时,我将更有可能记住所做的操作)。@RoccoMaxamas谢谢!精彩的。我很欣赏它被分解成多行,并且列重命名是为了防止有一堆Name_x和Name_y列。