大佬教程收集整理的这篇文章主要介绍了在python中将多列更改为具有三个单独列的行,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
示例源表
城市 | 2010Q1 交付 | 2010Q2 交付 | 2010Q3 交付 | 2010Q4 交付 | 2010Q1服务 | 2010Q2服务 | 2010Q3服务 | 2010Q4服务 |
---|---|---|---|---|---|---|---|---|
A | 10 | 15 | 20 | 25 | 20 | 25 | 30 | 35 |
B | 30 | 30 | 40 | 55 | 20 | 25 | 45 | 55 |
C | 20 | 25 | 40 | 55 | 25 | 35 | 40 | 65 |
结果表
城市 | 期间 | 交付 | 服务 |
---|---|---|---|
A | 2010Q1 | 10 | 20 |
A | 2010Q2 | 15 | 25 |
A | 2010Q3 | 20 | 30 |
A | 2010Q4 | 25 | 35 |
B | 2010Q1 | 30 | 20 |
B | 2010Q2 | 30 | 25 |
B | 2010Q3 | 40 | 45 |
B | 2010Q4 | 55 | 55 |
C | 2010Q1 | 20 | 25 |
C | 2010Q2 | 25 | 35 |
C | 2010Q3 | 40 | 40 |
C | 2010Q4 | 55 | 65 |
我使用了melt函数但无法获得所需的输出。
使用wide_to_long
:
df = (pd.wide_to_long(df,stubnames=['Delivery in ','services in '],i='City',j='Period',suffix='\w+')
.rename(columns=lambda x: x.split()[0])
.sort_index()
.reset_index())
print (df)
City Period Delivery services
0 A 2010Q1 10 20
1 A 2010Q2 15 25
2 A 2010Q3 20 30
3 A 2010Q4 25 35
4 B 2010Q1 30 20
5 B 2010Q2 30 25
6 B 2010Q3 40 45
7 B 2010Q4 55 55
8 C 2010Q1 20 25
9 C 2010Q2 25 35
10 C 2010Q3 40 40
11 C 2010Q4 55 65
以上是大佬教程为你收集整理的在python中将多列更改为具有三个单独列的行全部内容,希望文章能够帮你解决在python中将多列更改为具有三个单独列的行所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。