首页 > 解决方案 > 从另一个数据框和列表创建数据框

问题描述

我有一个这样的名字列表

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

我们是否有任何内置函数来完成这项工作

标签: pythonpandasdataframeindexingpandas-groupby

解决方案


您可以使用GroupBywith 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

推荐阅读