你好我是Pandas的新手,我手头有一个情况,我有数据帧 如下:
我希望在数据框中添加另一列,使其如下所示:
有人可以帮忙吗?我已经尝试过将其转换为字典和打印值的方法,但这并没有以这种形式给出输出。
答案 0 :(得分:1)
我认为join
对新列的值string
需要GroupBy.transform
为df['col 5'] = (df.groupby(['col 1','col 2','col 3'])['col 4']
.transform(lambda x: ','.join(x.astype(str))))
print (df)
col 1 col 2 col 3 col 4 col 5
0 A B C 25 25,22,23,45
1 A B C 22 25,22,23,45
2 A B C 23 25,22,23,45
3 A B C 45 25,22,23,45
4 P Q R 9 9,109,20
5 P Q R 109 9,109,20
6 P Q R 20 9,109,20
s:
list
如果需要df = df.join(df.groupby(['col 1','col 2','col 3'])['col 4']
.apply(list).rename('col 5'), on=['col 1','col 2','col 3'])
print (df)
col 1 col 2 col 3 col 4 col 5
0 A B C 25 [25, 22, 23, 45]
1 A B C 22 [25, 22, 23, 45]
2 A B C 23 [25, 22, 23, 45]
3 A B C 45 [25, 22, 23, 45]
4 P Q R 9 [9, 109, 20]
5 P Q R 109 [9, 109, 20]
6 P Q R 20 [9, 109, 20]
使用join
:
*ngIf