我正试图从一个所在的数据帧构建一个数据帧
我当前的数据帧是
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.transform
和join
:
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.mask
和DataFrame.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