数据框架重构



我有一个数据框架,我想配置它的方式,年是水平的,Ex1, Ex2是垂直的,但同时保持ID值也垂直和一致。我试过用熊猫的转置函数,但它不能完成任务。

这是原始的数据帧:

ID   Year    Ex1 Ex2
0   1   2021    315 35
1   1   2022    233 23
2   1   2023    566 5766
3   2   2024    754 7554
4   2   2025    334 3334
5   2   2021    543 5443
6   3   2022    678 6728
7   3   2023    65  645
8   3   2024    456 4556
9   3   2025    53  563

,这是需要的结果:

ID  Ex  2021    2022    2023    2024    2025
0   1   Ex1 315      233    566     
1   1   Ex2 35        23    5766        
2   2   Ex1 543                      754    334
3   2   Ex2 5443                    7554    3334
4   3   Ex1          678     65      456     53
5   3   Ex2          6728   645     4556    563

您也可以使用stackunstack:

print (df.set_index(["ID","Year"]).stack().unstack("Year", fill_value=""))
Year    2021  2022  2023  2024  2025
ID                                  
1  Ex1   315   233   566            
Ex2    35    23  5766            
2  Ex1   543               754   334
Ex2  5443              7554  3334
3  Ex1         678    65   456    53
Ex2        6728   645  4556   563

您可以meltpivot(或pivot_table):

(df.melt(id_vars=['ID', 'Year'], var_name='Ex')
.pivot_table(index=['ID', 'Ex'], columns='Year', values='value', fill_value='')
.reset_index()
.rename_axis(None, axis=1)
)

输出:

ID   Ex    2021    2022    2023    2024    2025
0   1  Ex1   315.0   233.0   566.0                
1   1  Ex2    35.0    23.0  5766.0                
2   2  Ex1   543.0                   754.0   334.0
3   2  Ex2  5443.0                  7554.0  3334.0
4   3  Ex1           678.0    65.0   456.0    53.0
5   3  Ex2          6728.0   645.0  4556.0   563.0

相关内容

  • 没有找到相关文章

最新更新