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

标签 python pandas dataframe

我有一个包含两列的数据框 - 名称和编号。我想根据数字列对所有名称进行分组,然后以表格格式打印数据,其中所有名称的编号为 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/

相关文章:

python - 读取文件时使用 lambda 函数将日期转换为时间戳

python - Groupby、移位和前向填充

python - 我无法安装 python-ldap

python - 使用新数据流沿着major_axis 增长pandas 面板?

python - 抽认卡抛硬币词典

hadoop - 如何从配置单元外部表创建数据框

python - 如何从 python 数据框列中的项目列表中提取项目?

python - 如何在 Python 中将文件加载为 List 类型?

python - cx_Oracle.NotSupportedError : Python value of type NAType not supported

python - Pandas 错误转义 %s"% escape, len(escape)