python - 使用 Pandas 的字典键和值的列名称

标签 python excel pandas

我正在使用 pandas 将一些数据转储到 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 会出现以下错误:

 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)

关于python - 使用 Pandas 的字典键和值的列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42135687/

相关文章:

python - 您有 3 个未应用的迁移。在您为应用程序 : admin, auth 应用迁移之前,您的项目可能无法正常工作

python - 根据特定条件将 pandas 中的 2 个字符串列组合成一个新列的最佳方法是什么?

pandas - 在 Pandas 中将多个类别合二为一

python - 我怎样才能包含标题?

python - 以原点 ='end_day' 重新采样

Python3(Urllib) -<绑定(bind)方法 HTTPResponse.read of <http.client.HTTPResponse object at 0x03281BD0>>

python - 初学者 : Python sound modules not working (Circular Import)

sql - 编写多个条件时的 Case 的更好方法

excel - 自动化帮助,excel 或 SPSS,需要为每五个值计算中值

javascript - 如何将数据从 csv 文件或 Excel 文件导出到 JavaScript 对象?