Pandas:展开DataFrame中的一列

7

我想要在Pandas DataFrame中取消堆叠一个列。DataFrame以“日期”为索引,我想要取消堆叠“国家”列,使每个国家成为自己的列。当前的pandas DF如下所示:

             Country   Product      Flow Unit  Quantity  
Date                                                         
2002-01-31   FINLAND  KEROSENE  TOTEXPSB  KBD    3.8129     
2002-01-31    TURKEY  KEROSENE  TOTEXPSB  KBD    0.2542     
2002-01-31  AUSTRALI  KEROSENE  TOTEXPSB  KBD   12.2787     
2002-01-31    CANADA  KEROSENE  TOTEXPSB  KBD    5.1161     
2002-01-31        UK  KEROSENE  TOTEXPSB  KBD   12.2013     

当我使用df.pivot时,会出现以下错误:“ReshapeError:索引包含重复条目,无法重新整形”。这是因为我正在查看每个国家同时报告的日期。我想要的是将“Country”列展开,以便每个月只显示一个日期。
数据框的标题仍然是索引,如“Date”。
Date        FINLAND TURKEY  AUSTRALI  CANADA Flow      Unit

2002-01-31  3.8129  0.2542  12.2787   5.1161 TOTEXPSB   KBD

我已经花了一段时间在这上面,但是却没有任何进展。所以如果你能提供一些方向或见解的话,那就太好了。

另外,请注意,你只看到了DataFrame的头部,因此数据的年份格式是这样的。

谢谢,

Douglas

1个回答

4
如果您可以放弃“Product”、“Unit”和“Flow”,那么它应该就像这样简单。
df.reset_index().pivot(columns='Country', index='Date', values='Quantity')

提供

Country  AUSTRALI    CANADA  FINLAND TURKEY  UK
Date                    
2002-01-31   12.2787     5.1161  3.8129  0.2542  12.2013

请允许我补充一点信息。此数据框已被减少。因此Flow列仅具有一个唯一字符串“TOTEXPSB”。同样,Unit列中“KBD”是唯一的对象。所以我可以删除这两个列。我现在明白您的想法并将删除这些列,看看能否使其正常运转。谢谢!道格拉斯 - user3055920
谢谢Douglas,我已经更新了我的答案,假设您也可以放弃“Product”。如果不是这种情况,请告诉我。 - jmz
谢谢!这是一个非常简洁的解决方案。 - user3055920

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接