在一个个人项目中,我玩了一个数据框,并且有这样的内容

In[1] :
from random import random

companies = ['Google', 'Apple', 'Nike', 'Microsoft']
Years = [2020, 2019, 2018]
df = pd.DataFrame(columns=['Company', 'Year', 'Money'])
iterator = 0

for company in companies:
    for year in Years:
        df.loc[iterator] = [company, year, random()]
        iterator += 1

df.set_index('Year').pivot(columns='Company', values='Money')

Out[1]:
Company Apple   Google  Microsoft   Nike
Year
2018    0.290925    0.568462    0.459147    0.755947
2019    0.919250    0.529112    0.881319    0.700846
2020    0.064253    0.742629    0.232048    0.522739


我想乘坐CompanyYear,所以我的输出变成

Out[2]:
        Apple   Google  Microsoft   Nike

2018    0.290925    0.568462    0.459147    0.755947
2019    0.919250    0.529112    0.881319    0.700846
2020    0.064253    0.742629    0.232048    0.522739


我知道原始索引名称可以这样删除:

del df.index.name


但是如何删除列索引名呢?

最佳答案

您可以使用以下方法执行此操作:

del df.columns.name


或同时使用

df.rename_axis(index=None, columns=None)


因此,在数据透视表语句的结尾处,将rename_axis方法链接如下:

df = df.set_index('Year').pivot(columns='Company', values='Money')\
       .rename_axis(index=None, columns=None)


输出:

         Apple    Google  Microsoft      Nike
2018  0.491759  0.102509   0.799196  0.603748
2019  0.640801  0.966476   0.401801  0.928443
2020  0.678182  0.373457   0.524619  0.389381

10-05 22:27