如何通过分区连接 pandas 列?

Rod*_*o A 2 python python-3.x pandas

我有一个像这样的熊猫数据框:

df = pd.DataFrame({"Id": [1, 1, 1, 2, 2, 2, 2], "字母": ['A', 'B', 'C', 'A', 'D '、'B'、'C']})

如何有效地添加新列“合并”,以便将“letter”列中的所有值通过“Id”连接起来,因此最终的数据框将如下所示:

输出_df

Ynj*_*jmh 6

groupby Id然后你就可以列了transform

df['Merge'] = df.groupby('Id').transform(lambda x: '-'.join(x))
Run Code Online (Sandbox Code Playgroud)
print(df)

   Id Letter    Merge
0   1      A    A-B-C
1   1      B    A-B-C
2   1      C    A-B-C
3   2      A  A-D-B-C
4   2      D  A-D-B-C
5   2      B  A-D-B-C
6   2      C  A-D-B-C
Run Code Online (Sandbox Code Playgroud)

感谢您sammywemmy指出lambda这里不需要,所以您可以使用更简单的形式

print(df)

   Id Letter    Merge
0   1      A    A-B-C
1   1      B    A-B-C
2   1      C    A-B-C
3   2      A  A-D-B-C
4   2      D  A-D-B-C
5   2      B  A-D-B-C
6   2      C  A-D-B-C
Run Code Online (Sandbox Code Playgroud)