使用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)感谢您指出它,我将它添加为注释以供将来参考。