python - 如何转置并添加具有从其中一列引用的值的新列
问题描述
我正在使用以下数据框读取 csv 文件:
0 Type Jan-15 Feb-15 Mar-15 Apr-15 May-15 Jun-15
1 Staff 1 3 4 2 2 1
2 Business 2 1 2 3 2 2
3 Parking 1 4 3 3 1 1
我的最终目标是 1)转置 df 和 2)添加四分之一列;沿着这条线的东西
Type Staff Business Parking quarter
Jan-15 1 2 1 q1
Feb-15 3 1 4 q1
Mar-15 4 2 3 q1
Apr-15 2 3 3 q2
May-15 2 2 1 q2
Jun-15 1 2 1 q2
到目前为止,我使用这个转置
dft = df.set_index('Type').transpose()
但是,我正在努力添加季度列并填写季度。我已经尝试过了,但没有成功
dft['quarter'] = dft['Type'].str.extract(r'(Jan|Feb|Mar|Apr|May|Jun)').map({'Jan':'Q1', 'Feb':'Q1','Mar':'Q1','Apr':'Q2','May':'Q2','Jun':'Q2'})
对我做错了什么有帮助吗?有什么建议么?谢谢!
解决方案
似乎Type
是索引而不是列名
dft['quarter'] = dft.index.str.extract(r'(Jan|Feb|Mar|Apr|May|Jun)')[0].map({'Jan':'Q1', 'Feb':'Q1','Mar':'Q1','Apr':'Q2','May':'Q2','Jun':'Q2'}).values
Type Staff Business Parking quarter
Jan-15 1 2 1 Q1
Feb-15 3 1 4 Q1
Mar-15 4 2 3 Q1
Apr-15 2 3 3 Q2
May-15 2 2 1 Q2
Jun-15 1 2 1 Q2
推荐阅读
- java - 上传图片时 Firebase 存储崩溃
- html - 我在制作按钮时遇到问题
- vb.net - 如何从 SQL 数据库中获取 API 链接中的电子邮件地址?
- git - 我如何 Cherry 使用 TortoiseGit 选择另一个分支的提交而不提交?
- node.js - 无法从服务文件调用 const 变量到组件文件
- c - 使用 ptrace 停止或杀死进程中的线程?
- laravel-5 - 我应该在 Laravel 5 中使用什么依赖注入或绑定?
- android - 在简单的自定义 Android 浏览器中打开外部 URL
- r - 使用 apply 选择 R 单元格
- php - 如何通过 PHP 在 HTML 中调用 XML Schema 内容