使用熊猫的字典键和值的列名称

问题描述:

我使用熊猫将某些数据转储到Excel文件中。数据是字典格式,我使用下面的代码来转储它。使用熊猫的字典键和值的列名称

df1 = pd.DataFrame.from_dict(weights_dict, orient="index") 
df1.columns = ['weights'] 

我得到以下输出

   | weights 
------------------------ 
D1_sum  | 8 
U2_conv  | 9 
y1_maxpool | 10 
y22_dropout | 11 

我想一个名称设置为第一列也是如此。我怎样才能做到这一点?谢谢。

预期输出:

Layers  | weights 
------------------------ 
D1_sum  | 8 
U2_conv  | 9 
y1_maxpool | 10 
y22_dropout | 11 

编辑:

使用

df.index.name = 'Layer' 

我得到以下结果后:

   | weights 
------------------------ 
Layer  | 
------------------------ 
D1_sum  | 8 
U2_conv  | 9 
y1_maxpool | 10 
y22_dropout | 11 

使用rename_axis给出以下埃罗R:

File "C:\ENV\p34\lib\site-packages\pandas\core\generic.py", line 573, in rename 
    result._data = result._data.rename_axis(f, axis=baxis, copy=copy) 
    File "C:\ENV\p34\lib\site-packages\pandas\core\internals.py", line 2233, in rename_axis 
    obj.set_axis(axis, _transform_index(self.axes[axis], mapper)) 
    File "C:\ENV\p34\lib\site-packages\pandas\core\internals.py", line 3982, in _transform_index 
    items = [func(x) for x in index] 
    File "C:\ENV\p34\lib\site-packages\pandas\core\internals.py", line 3982, in <listcomp> 
    items = [func(x) for x in index] 
TypeError: 'str' object is not callable 

您可以使用一组列名或索引名或两个:

df = pd.DataFrame({'weights': [8, 9, 10, 11]}, 
        index=['D1_sum', 'U2_conv', 'y1_maxpool', 'y22_dropout']) 
print (df) 
      weights 
D1_sum    8 
U2_conv   9 
y1_maxpool  10 
y22_dropout  11 


df.index.name = 'Layers1' 
df.columns.name = 'Layers2' 

print (df) 
Layers2  weights 
Layers1    
D1_sum    8 
U2_conv   9 
y1_maxpool  10 
y22_dropout  11 

rename_axis另一种解决方案:

df = df.rename_axis('Layers1').rename_axis('Layers2', axis=1) 

print (df) 
Layers2  weights 
Layers1    
D1_sum    8 
U2_conv   9 
y1_maxpool  10 
y22_dropout  11 

df.columns.name = 'Layers' 
print (df) 
Layers  weights 
D1_sum    8 
U2_conv   9 
y1_maxpool  10 
y22_dropout  11 

df = df.rename_axis('Layers', axis=1) 
print (df) 
Layers  weights 
D1_sum    8 
U2_conv   9 
y1_maxpool  10 
y22_dropout  11 

可能的,如果需要的解决方案Excel中的列名称:

#set index name 
df.index.name = 'Layer' 
#reset index - index values create new column 
df = df.reset_index() 
print (df) 
     Layer weights 
0  D1_sum  8 
1  U2_conv  9 
2 y1_maxpool  10 
3 y22_dropout  11 

#write df to excel, remove default index (0,1,2,3) 
df.to_excel('file.xlsx', index=False) 
+0

谢谢。但是,是否有可能只有一个单元格具有“层”,并且与“权重”单元相邻,例如“|”图层|重量|' – blackbug

+0

对不起,我没有解释它非常好。所以我编辑答案。 – jezrael

+0

再次感谢!出于某种原因,'df.columns.name ='Layer''代码对我没有任何影响。 'df.index.name ='Layer'将图层单元格添加到列中,但格式不正确。我已经用输出更新了这个问题。 – blackbug