将多层表头的一个标题行移动到列中

2024-04-26 05:16:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用csv\u读取器读取csv,该读取器使用多行作为标题。我可以在文件中读取跳过标题前所需的行,还可以重置索引以不使用第一列,因为我不希望我的数据成为索引。诀窍是在读入数据帧之后,我需要尝试执行两个任务。顶行不重复标题名称,但当它表示最后填写的字段时为空。我想“枢轴”这个标题列只留下第二个标题和填写各自的空白单元格。你知道吗

输入示例如下:

   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


Tags: 文件csv数据名称标题示例内容读取器
1条回答
网友
1楼 · 发布于 2024-04-26 05:16:48

使用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

相关问题 更多 >