我在data.csv
文件中有这个简单的数据框:
I,C,v
a,b,1
b,a,2
e,a,1
e,c,0
b,d,1
a,e,1
b,f,0
我想转动它,然后返回一个方形表(作为矩阵)。到目前为止,我已经阅读了数据框并使用以下内容构建了一个数据透视表:
df = pd.read_csv('data.csv')
d = pd.pivot_table(df,index='I',columns='C',values='v')
d.fillna(0,inplace=True)
正确获取:
C a b c d e f
I
a 0 1 0 0 1 0
b 2 0 0 1 0 0
e 1 0 0 0 0 0
现在我想返回一个方形表,其中包含行中缺少的列索引,因此生成的表将是:
C a b c d e f
I
a 0 1 0 0 1 0
b 2 0 0 1 0 0
c 0 0 0 0 0 0
d 0 0 0 0 0 0
e 1 0 0 0 0 0
f 0 0 0 0 0 0
答案 0 :(得分:5)
reindex
可以添加行和列,并使用0填充缺失值:
index = d.index.union(d.columns)
d = d.reindex(index=index, columns=index, fill_value=0)
产量
a b c d e f
a 0 1 0 0 1 0
b 2 0 0 1 0 0
c 0 0 0 0 0 0
d 0 0 0 0 0 0
e 1 0 0 0 0 0
f 0 0 0 0 0 0