【问题标题】:Rearranging Data in Python/Pandas: Turn specific column vlaues into headers在 Python/Pandas 中重新排列数据:将特定列值转换为标题
【发布时间】:2016-03-27 20:15:22
【问题描述】:

我收到了一个大型数据集,其中的数据排列如下:

location  cost    year
1         23.15    1986
1         23.91    1988
1         23.31    1989
1         23.91    1993
1         22.98    1994
1         23.99    1995
1         23.71    1997
1         23.01    1999
2         23.21    2000
2         24.28    2004
2         24.4     2005

我想重新排列一下,所以它的形式是:

location    1985    1986    1987   1988
1           20.00   20.00   20.0    20.0
2           20.00   20.00   20.0    20.0
3           20.00   20.00   20.0    20.0
4           20.00   20.00   20.0    20.0
5           20.00   20.00   20.0    20.0

(注意:忽略新成本都是 20.0。我的目标是将 year 列中的值转换为标题,以便每个 location 仅列出一次,cost 用于特定年份位于该列中。)

有没有一种简单的方法可以做到这一点?我已经研究了groupytranspose,但无法产生任何接近我想要的东西。

提前感谢您提供的任何指点。

【问题讨论】:

  • 为什么所有的列都是20.0[0]
  • 只是为了举例说明;这些值不是真实的。
  • 这有点令人困惑。可能值得展示您期望的真实值。
  • 看看你当前的代码可能也不错。

标签: python pandas


【解决方案1】:

你需要使用pivot_table:

pd.pivot_table(df, index='location', columns='year', values='cost', fill_value=0)

使用您的样品:

#Out[11]: 
#year       1986   1988   1989   1993   1994   1995   1997   1999   2000  \
#location                                                                  
#1         23.15  23.91  23.31  23.91  22.98  23.99  23.71  23.01   0.00   
#2          0.00   0.00   0.00   0.00   0.00   0.00   0.00   0.00  23.21   

#year       2004  2005  
#location               
#1          0.00   0.0  
#2         24.28  24.4

【讨论】:

    猜你喜欢
    • 2020-06-19
    • 2013-06-22
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    • 2017-08-11
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    相关资源
    最近更新 更多