首页 > 解决方案 > 如何转置并添加具有从其中一列引用的值的新列

问题描述

我正在使用以下数据框读取 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'})

对我做错了什么有帮助吗?有什么建议么?谢谢!

标签: pythonpandasdataframe

解决方案


似乎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

推荐阅读