首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将数据压缩并组合列标签和行标签?

如何将数据压缩并组合列标签和行标签?
EN

Stack Overflow用户
提问于 2022-04-13 07:32:00
回答 2查看 46关注 0票数 1

我有这样的数据

代码语言:javascript
运行
复制
     0210  0222  0525
001     1     4     7
002     2     5     8
003     3     6     9

我如何把它压平并组合成这样的标签呢?

代码语言:javascript
运行
复制
0210-001    1
0210-002    2
0210-003    3
0222-001    4
0222-002    5
0222-003    6
0525-001    7
0525-002    8
0525-003    9
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-04-13 07:33:56

使用DataFrame.unstack和扁平的MultiIndex值:

代码语言:javascript
运行
复制
s = df.unstack()
s.index = [f'{a}-{b}' for a, b in s.index]

print (s)
0210-001    1
0210-002    2
0210-003    3
0222-001    4
0222-002    5
0222-003    6
0525-001    7
0525-002    8
0525-003    9
dtype: int

DataFrame的最后一次使用:

代码语言:javascript
运行
复制
df = s.rename_axis('a').reset_index(name='b')
print (df)
          a  b
0  0210-001  1
1  0210-002  2
2  0210-003  3
3  0222-001  4
4  0222-002  5
5  0222-003  6
6  0525-001  7
7  0525-002  8
8  0525-003  9
票数 0
EN

Stack Overflow用户

发布于 2022-04-13 07:34:18

您可以将stack和两个MultiIndex级别组合起来:

代码语言:javascript
运行
复制
s = df.T.stack()
s.index = s.index.map(lambda x: f'{x[0]}-{x[1]:03d}')

产出:

代码语言:javascript
运行
复制
0210-001    1
0210-002    2
0210-003    3
0222-001    4
0222-002    5
0222-003    6
0525-001    7
0525-002    8
0525-003    9
dtype: int64
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71853573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档