python - 从另一个数据框和列表创建数据框
问题描述
我有一个这样的名字列表
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
我们是否有任何内置函数来完成这项工作
解决方案
您可以使用GroupBy
with 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