Skip to main content
 首页 » 编程设计

python之打印具有不同条目数的表

2025年05月04日13qlqwjy

我有一个包含两列的数据框 - 名称和编号。我想根据数字列对所有名称进行分组,然后以表格格式打印数据,其中所有名称的编号为 1,旁边是编号为 2 的名称,依此类推。 例如, 如果输入是:

name = ['Bob','David','Jane','Mike','Josh','Emily'] 
number = [1,2,3,1,2,1] 
df = pd.DataFrame([name,number]).T 
df.columns = ['name','number'] 

期望的输出(但希望看起来更好):

num1     num2  num3 
 
Bob          David     Jane 
 
Mike         Josh       
 
Emily                   

请您参考如下方法:

选项 1
使用 defaultdict

from collections import defaultdict 
 
d = defaultdict(list) 
f = 'num{}'.format 
 
for nm, nb in zip(df.name, df.number): 
    d[f(nb)].append(nm) 
 
pd.DataFrame.from_dict(d, orient='index').T.fillna('') 
 
    num1   num2  num3 
0    Bob  David  Jane 
1   Mike   Josh       
2  Emily              

选项 2

i = df.groupby('number').cumcount().values 
j, c = pd.factorize(df.number.values) 
 
a = np.empty((i.max() + 1, c.size), dtype='<U32') 
a.fill('') 
a[i, j] = df.name.values 
 
pd.DataFrame(a, columns=c).add_prefix('num') 
 
    num1   num2  num3 
0    Bob  David  Jane 
1   Mike   Josh       
2  Emily