我正在使用使用多行标题的熊猫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
我要输出的内容:
答案 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