我有一个包含两列的数据框 - 名称和编号。我想根据数字列对所有名称进行分组,然后以表格格式打印数据,其中所有名称的编号为 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
关于python - 打印具有不同条目数的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46803756/