Pandas:无法从以前合并的多级数据帧中寻址列



在与group by进行数据帧聚合后,我试图"压平";将标题转换为一个标题,以便将数据正确导出为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 
...

熊猫似乎合并了列名,但我仍然有两个级别的列描述。如果我试图寻址第二级列,它会引发一个错误:

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(),以"压平";根据请求发送标头。看见https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.reset_index.html

最新更新