我需要为每个组条件从三列中连接语句



我正试图从一个所在的数据帧构建一个数据帧

我当前的数据帧是

col1 col2 col3 
a      a1   abc
a      a1   def
a      a2   ijk
a      a2   xyz
a      a2   fgh
b      b1   123
b      b2   456
b      b1   789
b      b2   xua

我的输出应该是:

col1 col2 col3 
a      a1   abc.def.ijk
a      a1   
a      a1   
a      a2   xyz.fgh
a      a2
b      b1   123.789
b      b2   456.xua
b      b1   
b      b2   

谢谢你的帮助。

如果不关心重复,请使用GroupBy.transformjoin:

df['col3'] = df.groupby(['col1','col2'])['col3'].transform('.'.join)
print (df)
col1 col2         col3
0    a   a1      abc.def
1    a   a1      abc.def
2    a   a2  ijk.xyz.fgh
3    a   a2  ijk.xyz.fgh
4    a   a2  ijk.xyz.fgh
5    b   b1      123.789
6    b   b2      456.xua
7    b   b1      123.789
8    b   b2      456.xua

如果希望避免重复,则添加Series.maskDataFrame.duplicated:

m = df.duplicated(['col1','col2'])
df['col3'] = df.groupby(['col1','col2'])['col3'].transform('.'.join).mask(m, '')
print (df)
col1 col2         col3
0    a   a1      abc.def
1    a   a1             
2    a   a2  ijk.xyz.fgh
3    a   a2             
4    a   a2             
5    b   b1      123.789
6    b   b2      456.xua
7    b   b1             
8    b   b2             

最新更新