pandas - 将表格转换为方阵

Fab*_*nna 1 python pandas

我在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
Run Code Online (Sandbox Code Playgroud)

我想转动它,然后返回一个方形表(作为矩阵).到目前为止,我已经阅读了数据框并构建了一个数据透视表:

df = pd.read_csv('data.csv')
d = pd.pivot_table(df,index='I',columns='C',values='v')
d.fillna(0,inplace=True)
Run Code Online (Sandbox Code Playgroud)

正确获取:

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
Run Code Online (Sandbox Code Playgroud)

现在我想返回一个方形表,其中包含行中缺少的列索引,因此生成的表将是:

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
Run Code Online (Sandbox Code Playgroud)

unu*_*tbu 5

reindex 可以添加行和列,并使用0填充缺少的值:

index = d.index.union(d.columns)
d = d.reindex(index=index, columns=index, fill_value=0)
Run Code Online (Sandbox Code Playgroud)

产量

   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
Run Code Online (Sandbox Code Playgroud)