首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >重塑DataFrame Pandas -一些变量长到另一个变宽

重塑DataFrame Pandas -一些变量长到另一个变宽
EN

Stack Overflow用户
提问于 2022-03-24 20:46:34
回答 1查看 92关注 0票数 0

我需要重新构造一个数据框架,以便一些变量(Diag1、Diag2、Diag3)变为长wile其他变量(周期)变为wide。基本上他们需要交换位置。

我在下面的示例中重新创建了原始数据。我尝试分别使用透视和熔融,但没有效果,在示例中演示了这一点。

代码语言:javascript
运行
复制
df = pd.DataFrame({
    'ID':[1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,],
    'Period':['0 Month','3 Month','0 Month','3 Month','0 Month',
            '3 Month','0 Month','3 Month','0 Month','3 Month','0 Month',
            '3 Month','0 Month','3 Month','0 Month','3 Month','0 Month',
            '3 Month','0 Month','3 Month','0 Month','3 Month',],
    'Diag1':[0,1,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,],
    'Diag2':[0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,1,0,0,0,],
    'Diag3':[0,0,1,0,0,0,1,1,0,0,1,0,0,0,1,0,0,0,1,0,1,0,]
    })

dfp = df.pivot(index=["ID",], columns='Period',).reset_index()
print(dfp)

dfm = df.melt(id_vars=["ID",],value_vars=['Period'])
print(dfm)

预期的结果是:

代码语言:javascript
运行
复制
ID  Diagnosis   0_Month 3_Month
1   Diag1       0       1
1   Diag2       0       0
1   Diag3       0       0
2   Diag1       0       1
2   Diag2       1       0
2   Diag3       1       0
3   Diag1   

3   Diag2   

3   Diag3       etc...

我怀疑我需要一些组合的2,但我很难找到任何例子。我的大脑开始融化了.

EN

Stack Overflow用户

回答已采纳

发布于 2022-03-24 20:50:43

你可以melt,然后是pivot

代码语言:javascript
运行
复制
out = (df.melt(id_vars=['ID', 'Period'], var_name='Diagnosis')
       .pivot(['ID','Diagnosis'], 'Period', 'value')
       .reset_index().rename_axis(columns=[None]))

输出:

代码语言:javascript
运行
复制
    ID Diagnosis  0 Month  3 Month
0    1     Diag1        0        1
1    1     Diag2        0        0
2    1     Diag3        0        0
3    2     Diag1        1        0
4    2     Diag2        1        0
..  ..       ...      ...      ...
28  10     Diag2        1        0
29  10     Diag3        1        0
30  11     Diag1        0        0
31  11     Diag2        0        0
32  11     Diag3        1        0

[33 rows x 4 columns]
票数 3
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71609232

复制
相关文章

相似问题

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