我在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_table这样的东西:
colC p q r "unassigned" "total"
w 2 0 0 0 2
x 0 1 0 1 2
y 0 0 1 0 1
答案 0 :(得分:2)
您可以在第一列中使用crosstab
,然后使用isna
检查缺失值,并按agg
进行汇总,以sum
进行计数,并按size
进行总计, DataFrame.join
的最后加入聚会:
df1 = pd.crosstab(df.colC, df.colD)
print (df1)
colD p q r
colC
w 2 0 0
x 0 1 0
y 0 0 1
df2 = (df['colD'].isna()
.astype(int)
.groupby(df['colC'])
.agg([('unassigned','sum'),('total','size')]))
print (df2)
unassigned total
colC
w 0 2
x 1 2
y 0 1
df = df1.join(df2).reset_index()
print (df)
colC p q r unassigned total
0 w 2 0 0 0 2
1 x 0 1 0 1 2
2 y 0 0 1 0 1
答案 1 :(得分:1)