我有一张表,如下所示:

Id    Family    Modal
a1     Jack      A381
a2     Jack      B674
a4    Sutyama    789b
a5    Sutyama    987y

我想得到下面的输出
Id    Family    Modal   Overall
a1     Jack      A381   A381,B674
a2     Jack      B674   A381,B674
a4    Sutyama    789b   789b,987y
a5    Sutyama    987y   789b,987y

我尝试了下面的代码,但是它返回了我的空列
df["Overall"]=df.groupby("Family")["Modal"].apply(' '.join)

有人有主意吗?

最佳答案

下面是我在使用groupby应用函数时的经验法则:
要计算并返回聚合输出,请使用GroupBy.aggGroupBy.apply,或
要将聚合结果广播回原始行,请使用GroupBy.transform
这是第二个规则的用例:

df['Overall'] = df.groupby("Family")["Modal"].transform(','.join)
df

   Id   Family Modal    Overall
0  a1  Jack     A381  A381,B674
1  a2  Jack     B674  A381,B674
2  a4  Sutyama  789b  789b,987y
3  a5  Sutyama  987y  789b,987y

关于python - 如何将不同的值行合并为新列的单行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56420276/

10-13 04:31