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
在使用 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