从另一个数据框和列表创建数据框

时间:2018-10-14 10:44:41

标签: python pandas dataframe indexing pandas-groupby

我有一个这样的名字列表

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

我们是否有内置函数可以完成此任务

1 个答案:

答案 0 :(得分:3)

您可以将GroupBystr.join一起使用,然后将reindexnames列表一起使用:

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