为了账号安全,请及时绑定邮箱和手机立即绑定

在 unstack 之后将多索引折叠为索引

在 unstack 之后将多索引折叠为索引

慕桂英3389331 2022-06-22 17:27:39
如何操作以下数据框,使列是索引,而不是多索引:df = pandas.DataFrame([    {'col_1': 'A', 'col_2': 'A', 'value': 1},    {'col_1': 'A', 'col_2': 'B', 'value': 1},    {'col_1': 'A', 'col_2': 'C', 'value': 1},    {'col_1': 'B', 'col_2': 'A', 'value': 1},    {'col_1': 'B', 'col_2': 'B', 'value': 1},    {'col_1': 'B', 'col_2': 'C', 'value': 1},]).set_index(['col_1', 'col_2']).unstack()这给出了:      value      col_2     A  B  Ccol_1            A         1  1  1B         1  1  1但是,我想:col_1     A  B  CA         1  1  1B         1  1  1我知道我可以用它.loc来达到一半:df.loc[:, 'value']这给出了:col_2  A  B  Ccol_1         A      1  1  1B      1  1  1但是,我看不到下一步。
查看完整描述

3 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

您看到的是驻留在数据框和属性中的pandas.Index对象的名称。要保留您显示的内容,您需要删除属性中的对象名称。indexcolumnspandas.Indexcolumns


df.value.rename_axis(None, axis=1)


       A  B  C

col_1         

A      1  1  1

B      1  1  1

为了更进一步,您确实需要col_1从indexusing中删除reset_index


df.value.rename_axis(None, axis=1).reset_index()


  col_1  A  B  C

0     A  1  1  1

1     B  1  1  1


查看完整回答
反对 回复 2022-06-22
?
萧十郎

TA贡献1815条经验 获得超12个赞

那是unstack您可以更改为的数据框series


df = pandas.DataFrame([

    {'col_1': 'A', 'col_2': 'A', 'value': 1},

    {'col_1': 'A', 'col_2': 'B', 'value': 1},

    {'col_1': 'A', 'col_2': 'C', 'value': 1},

    {'col_1': 'B', 'col_2': 'A', 'value': 1},

    {'col_1': 'B', 'col_2': 'B', 'value': 1},

    {'col_1': 'B', 'col_2': 'C', 'value': 1},

]).set_index(['col_1', 'col_2']).value.unstack()

df

col_2  A  B  C

col_1         

A      1  1  1

B      1  1  1


查看完整回答
反对 回复 2022-06-22
?
慕森卡

TA贡献1806条经验 获得超8个赞

你可以这样做:


df.columns = [e[1] for e in df.columns.values]

print(df)

输出


       A  B  C

col_1         

A      1  1  1

B      1  1  1


查看完整回答
反对 回复 2022-06-22
  • 3 回答
  • 0 关注
  • 95 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信