使用python DataFrame上其他列的信息创建新列

使用python DataFrame上其他列的信息创建新列,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个分组的数据帧 id num week 101 23 7 3 8 1 9 2 102 34 8 4 9 1 10 2 ... 我需要创建新的列,并有一个这样的数据框架 id num 7 8 9 10 101 23 3 1 2 0 102 34 0 4 1 2 .

我有一个分组的数据帧

 id  num  week  
101   23   7     3
           8     1
           9     2
102   34   8     4
           9     1
          10     2
       ...
我需要创建新的列,并有一个这样的数据框架

 id  num  7  8  9  10
101   23  3  1  2   0
102   34  0  4  1   2
        ...
正如您可能看到的,week列的值变成了几列

我还可能没有对输入数据帧进行分组,或者使用
重置\u索引
,如下所示:

 id  num  week  
101   23   7     3
101   23   8     1
101   23   9     2
102   34   8     4
102   34   9     1
102   34  10     2
       ...
但我不知道从哪一个开始比较容易

请注意,
id
num
都是键

使用unstack()和fillna(0)不包含NAN

让我们加载数据:

id  num  week  val
101   23   7     3
101   23   8     1
101   23   9     2
102   34   8     4
102   34   9     1
102   34   10    2

s = pd.read_clipboard(index_col=[0,1,2], squeeze=True)
注意,我已经将索引设置为id、num和week。如果还没有,请使用
set\u index

现在我们可以取消堆叠:从索引(行)移动到列。默认情况下,它会执行到行中的最后一个级别,即此处的
week
,但您可以使用
level=-1
level='week'

s.unstack().fillna(0)
请注意,正如@piRsquared所指出的,您可以一次完成
s.unstack(fill_value=0)


尝试
pivot
方法。您可以在
unstack
df中使用
fill\u value
。unstack(fill\u value=0)感谢您指出它,我将它添加为注释以供将来参考。