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

Pandas Melt with Multi Index Data Set - 为什么这样工作?

Pandas Melt with Multi Index Data Set - 为什么这样工作?

红颜莎娜 2021-09-24 15:55:40
我直接从 Pandas 文档中创建了这个数据集:In [28]: columns = pd.MultiIndex.from_tuples([('A', 'cat'), ('B', 'dog'),   ....:                                      ('B', 'cat'), ('A', 'dog')],   ....:                                     names=['exp', 'animal'])   ....: In [29]: index = pd.MultiIndex.from_product([('one', 'two'),                                             ('bar', 'baz', 'foo', 'qux')   ....:                                     ],   ....:                                    names=['first', 'second'])   ....: In [30]: df = pd.DataFrame(np.random.randn(8, 4), index=index, columns=columns)MultiIndex 数据集(用于列和行)如下所示:我想得到这样的东西[图像被截断,但你明白了]可能有无数种方法可以重塑它,但我想使用 unstack() 和melt() 来完成它这是我想出的两种方法:    1. pd.melt(df.reset_index(),id_vars=['first','second'])    2. pd.melt(df.unstack().reset_index(),id_vars=['first'])所以这就是我被困的地方:为什么这有效?df.reset_index() 给我这个数据框用这些列'first' 和 'second' 不会出现在列的名称中。它们是列 exp 的实际级别。所以我想知道如果我在熔体中为 id_vars 添加更多级别会发生什么如果我将熔体改为pd.melt(df.reset_index(),id_vars=['first','second','A'])我收到以下错误:ValueError:数组的长度必须相同如果我将熔体改为pd.melt(df.reset_index(),id_vars=['first','second','dog'])我收到以下错误:关键错误:'狗'有人可以用 reset_index() 直观地解释幕后发生的事情,为什么不融化接受其他级别?为什么“第一”和“第二”显示为级别而不是列?
查看完整描述

1 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

有一个函数叫 stack

yourdf=df.stack([0,1]).reset_index(name='value')


查看完整回答
反对 回复 2021-09-24
  • 1 回答
  • 0 关注
  • 169 浏览
慕课专栏
更多

添加回答

举报

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