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

时间:2016-11-16 00:22:04

标签: 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
        ...

如您所见,周列的值变为多列。

我也可能没有对输入数据框进行分组,或者使用reset_index,如下所示:

 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
       ...

但我不知道哪个更容易开始。

注意 idnum都是关键

1 个答案:

答案 0 :(得分:4)

使用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_index

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

指定它
s.unstack().fillna(0)

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

result