使用另一列(pandas)的值将列转换为两列

时间:2018-05-07 10:34:44

标签: python-3.x pandas

我的数据框看起来像这样:

measure   | location  | cause    |  val
Deaths    |  Alabama  |sickness1 | 0.045
Deaths    |  Alabama  |sickness2 | 0.001
...
Prevalence|  Alabama  |sickness1 | 0.05
Prevalence|  Alabama  |sickness2 | 0.003
...

因此,基本上有两种可能的措施(死亡和流行),多种疾病以及所有51个美国州和每种州的价值。 我想做的是将每个度量(死亡和流行)转换为自己的列,val列是它们各自的行值:

location  | cause    |  Deaths  | Prevalence
Alabama  |sickness1 | 0.045    | 0.05
Alabama  |sickness2 | 0.001    | 0.003
...

有(简单)方法吗? 不幸的是,我找不到可以帮助我的现有问题,但这可能是因为我不确定如何寻找它。因此,如果已经存在类似问题的问题(和答案),那么快速指向其中一个就会很棒!

1 个答案:

答案 0 :(得分:0)

您要找的是pivoting,但是常规DataFrame.pivot不会这样做,因为您需要使用多列作为唯一索引:location和{{1 }}

cause

其中pd.pivot_table(df, columns=['measure'], values='val', index=['cause', 'location'], aggfunc=max) 是您希望如何处理数据聚合(aggfuncmaxmean ...),如果每行只有一个值,则不会#39; t。。

sum