将多标题数据帧的一个标题行移到一列

时间:2019-06-18 18:53:53

标签: python pandas

我正在使用使用多行标题的熊猫csv_reader读取csv。我可以读入文件,跳过标题之前的必需行,并且还可以reset_index以不使用第一列,因为我不希望我的数据成为索引。诀窍是,读完数据框后,我需要尝试执行两个任务。第一行不重复标题名称,但是当它代表最后一个填写的字段时为空白。我想将此标题“透视”到一列,仅保留第二个标题并填充相应的空白单元格。

输入示例如下:

   a        b      
  c1 c2 c3 c1 c2 c3
1  0  0  0  0  0  0
2  0  0  0  0  0  0
3  0  0  0  0  0  0
4  0  0  0  0  0  0

我要输出的内容:

enter image description here

1 个答案:

答案 0 :(得分:2)

使用stack(level=0),然后重设索引。

df.stack(level=0).reset_index(level=-1).rename({'level_1': 'cNew'}, axis=1)

最小代码示例

idx = pd.MultiIndex.from_product([['a', 'b'], ['c1', 'c2', 'c3']])
df = pd.DataFrame(0, index=range(1, 5), columns=idx)
df

   a        b      
  c1 c2 c3 c1 c2 c3
1  0  0  0  0  0  0
2  0  0  0  0  0  0
3  0  0  0  0  0  0
4  0  0  0  0  0  0

df.stack(level=0).reset_index(level=-1).rename({'level_1': 'cNew'}, axis=1)

  cNew  c1  c2  c3
1    a   0   0   0
1    b   0   0   0
2    a   0   0   0
2    b   0   0   0
3    a   0   0   0
3    b   0   0   0
4    a   0   0   0
4    b   0   0   0