【问题标题】:Melting a dataframe with subcolumns使用子列融化数据框
【发布时间】:2019-11-26 09:52:40
【问题描述】:

我有一个在级别 1 带有子列的数据框:

A        B        C             d          
             1    2    3    1    2    3
ssd    usg   c1   c2   c3   d7   d8   d9
ssd1  usg1  c11  c22  c33  d77  d88  d99

C 和 D 列有多个相同的子列

我希望有列到行,这样输出应该是:

【问题讨论】:

  • 数据中的print (df.index) 是什么?
  • :A B C d 未命名:0_level_1 1 2 3 1 2 3 ssd usg c1 c2 c3 d7 d8 d9 ssd1 usg1 c11 c22 c33 d77 d88 d99

标签: python python-3.x pandas data-science transpose


【解决方案1】:

DataFrame.stackDataFrame.reset_indexrename 一起使用:

print (df.index)
MultiIndex([( 'ssd',  'usg'),
            ('ssd1', 'usg1')],
           names=['A', 'B'])

print (df.columns)
MultiIndex([('C', '1'),
            ('C', '2'),
            ('C', '3'),
            ('d', '1'),
            ('d', '2'),
            ('d', '3')],
           )

df = df.stack(0).reset_index().rename(columns={'level_2':'new'})
print (df)
      A     B new    1    2    3
0   ssd   usg   C   c1   c2   c3
1   ssd   usg   d   d7   d8   d9
2  ssd1  usg1   C  c11  c22  c33
3  ssd1  usg1   d  d77  d88  d99

【讨论】:

  • 这只是一个例子。我需要一些通用的东西。这样我必须在代码中写入所有值
  • @ayushgupta - 是的,这就是为什么添加到回答print (df.index)print (df.columns)的原因
  • @ayushgupta - 你的真实数据不同吗?
  • @ayushgupta - 好的,所以请只分享前 5 个值
  • A B C D 1 2 3 1 2 3 SSD USG C1 C2 C3 D7 D8 D9 SSD1 USG1 C11 C22 C33 D77 D111 C222 C333 D777 D888 D999 SSD3 USG3 C1111 C2222 C3333 D99999999 xyz def asd sdf ghj wer tyu ghnb
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-26
  • 1970-01-01
  • 2014-08-25
  • 1970-01-01
  • 2021-08-22
  • 1970-01-01
  • 2022-11-10
相关资源
最近更新 更多