Pandas:无法解决先前合并的多级数据框中的列

Pandas: Cannot address column from previously merged multi level data frame

在使用 group by 进行数据帧聚合后,我试图将 headers“扁平化”为一个以正确地将数据导出为 CSV:

df.columns = [' '.join(col).strip() for col in df..columns.values]
df.columns

输出如下所示:

Index(['count', 'average', 'mean',
       'sum'],
      dtype='object')

如果我直接调用数据框,我会得到不同的信息:

df

输出:

                 count average mean sum
col1 col2 col3 
...

好像pandas合并了列名,但是我还有两层列的描述。如果我尝试处理第二级列,则会引发错误:

df.drop('col1', axis = 'columns', level = 0)

输出:

AssertionError: axis must be a MultiIndex

df.drop('col1', axis = 'columns')

输出

KeyError: "['col1'] not found in axis"

所以我似乎被困在两者之间。如果我将数据框导出为 CSV 并再次导入,一切都很好:

df.to_csv('data.csv')

df = df.load_csv('data.csv')
df.drop('col1', axis = 'columns')

那么,我在这里误解和做错了什么?

您可能想在 df.groupby 语句之后执行 df.reset_index(),以按要求“展平”headers。参见 https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.reset_index.html