我有一个这样的名字列表
names= [Josh,Jon,Adam,Barsa,Fekse,Bravo,Talyo,Zidane]
我有一个像这样的数据框
Number Names
0 1 Josh
1 2 Jon
2 3 Adam
3 4 Barsa
4 5 Fekse
5 6 Barsa
6 7 Barsa
7 8 Talyo
8 9 Jon
9 10 Zidane
我想创建一个数据框,该数据框将具有名称列表中的所有名称,并将该数据框中的对应数字分组,对于没有对应数字的名称,应在下方添加一个星号
Names Number
Josh 1
Jon 2,9
Adam 3
Barsa 4,6,7
Fekse 5
Bravo *
Talyo 8
Zidane 10
我们是否有内置函数可以完成此任务
答案 0 :(得分:3)
您可以将GroupBy
与str.join
一起使用,然后将reindex
与names
列表一起使用:
res = df.groupby('Names')['Number'].apply(lambda x: ','.join(map(str, x))).to_frame()\
.reindex(names).fillna('*').reset_index()
print(res)
Names Number
0 Josh 1
1 Jon 2,9
2 Adam 3
3 Barsa 4,6,7
4 Fekse 5
5 Bravo *
6 Talyo 8
7 Zidane 10