首页 > 解决方案 > Pandas 向数据框添加列

问题描述

所以,我在这里看到了这个答案,这对于返回一个输出的函数是明智的。如果我的函数有多个输出怎么办?

更具体地说,假设我正在交叉引用某个 ID 上的一些数据。但是当我调用某些 ID 时,它会返回多个匹配项,我想将它们放入不同的列中。

这方面的一个示例如下所示,其中工人 3 有两个老板,0并且2,而工人1有一个老板,2

Worker_ID Boss_ID
        3       0
        3       2
        1       2

是否可以创建第二列并在不先进行填充的情况下进行填充,计算匹配数并创建相关的列数?

编辑:

我想要这样的简短形式:

Worker_ID  Boss_ID_1 Boss_ID_2   ...as necessary
        3          0         2
        1          2       nan

标签: pythonpandas

解决方案


通过使用创建一个密钥cumcount然后我们可以使用pivot

df.assign(key=df.groupby('Worker_ID').cumcount()+1).\
   pivot(index='Worker_ID',columns='key',values='Boss_ID').\
      add_prefix('Boss_ID_')
Out[242]: 
key        Boss_ID_1  Boss_ID_2
Worker_ID                      
1                2.0        NaN
3                0.0        2.0

推荐阅读