Python 如何创建一个数据透视表,将列条目数据透视到列标题,并为空条目创建一个新列?

Python 如何创建一个数据透视表,将列条目数据透视到列标题,并为空条目创建一个新列?,python,pandas,Python,Pandas,我在DataFrame中有一个表格取自excel: col A ColB colC colD 123451 a w p 123452 b x q 123453 c y r 123454 a x 123454 a w p 我希望使用pandas.pivot_表实现如下功能: colC p q r "unassigned" "total

我在DataFrame中有一个表格取自excel:

col A      ColB  colC  colD   
123451      a     w     p
123452      b     x     q
123453      c     y     r
123454      a     x     
123454      a     w     p 
我希望使用pandas.pivot_表实现如下功能:

colC   p  q  r  "unassigned" "total"
 w     2  0  0      0           2
 x     0  1  0      1           2
 y     0  0  1      0           1
您可以对第一列使用,然后通过检查缺少的值,并对count by
sum
和total by进行聚合,最后一次连接到一起的方式是:


您可以将所有的
None
替换为
'unassigned'
。然后使用获取各自的计数。使用合适的轴进行总计数

下面是执行此操作的代码

df1 = df[['colC', 'colD']].fillna('unassigned')
df1 = pd.crosstab(df1.colD, df1.colD)
df1['total'] = df1.sum(axis=1)
下面是代码的输出

D   p   q   r   unassigned  total
C                   
w   2   0   0    0           2
x   0   1   0    1           2
y   0   0   1    0           1

@jezrael,对问题做了一个小小的修改,你能帮忙吗?谢谢@jezrael的帮助!这是完美的。如果其他列也有空白条目,这将失败,这也会改变它们@我们可以使用colC和colD对数据帧进行切片。这可能会有所帮助,我明白了!
D   p   q   r   unassigned  total
C                   
w   2   0   0    0           2
x   0   1   0    1           2
y   0   0   1    0           1