访问熊猫数据透视表中元素的正确方法

Posted

技术标签:

【中文标题】访问熊猫数据透视表中元素的正确方法【英文标题】:the correct way to access elements in a pandas pivot table 【发布时间】:2016-05-19 12:50:57 【问题描述】:

我一直在尝试使用 pandas 数据框切片 .IX 表示法从以下数据透视表中访问元素。但是我收到错误:

没有钥匙。

pivot = c.pivot("date","stock_name","close").resample("A",how="ohlc")
pt = pd.DataFrame(pivot,index=pivot.index.year)
pt

从 pandas 数据透视表中仅切出一行或多列的正确方法是什么?

例如,如果我只想要 2016Billabong 的年度价格?

pivot["2016-12-31"]["BBG"]

【问题讨论】:

【参考方案1】:

你可以使用loc,docs:

print c
     date stock_name  close
0 2012-08-31        ibm      1
1 2013-08-31       aapl      1
2 2014-08-31       goog      1
3 2015-08-31        bhp      1
4 2016-08-31        bhp      1

pivot = c.pivot("date","stock_name","close").resample("A",how="ohlc")
print pivot
           aapl                 bhp                goog                 ibm  \
           open high low close open high low close open high low close open   
date                                                                          
2012-12-31  NaN  NaN NaN   NaN  NaN  NaN NaN   NaN  NaN  NaN NaN   NaN    1   
2013-12-31    1    1   1     1  NaN  NaN NaN   NaN  NaN  NaN NaN   NaN  NaN   
2014-12-31  NaN  NaN NaN   NaN  NaN  NaN NaN   NaN    1    1   1     1  NaN   
2015-12-31  NaN  NaN NaN   NaN    1    1   1     1  NaN  NaN NaN   NaN  NaN   
2016-12-31  NaN  NaN NaN   NaN    1    1   1     1  NaN  NaN NaN   NaN  NaN   


           high low close  
date                       
2012-12-31    1   1     1  
2013-12-31  NaN NaN   NaN  
2014-12-31  NaN NaN   NaN  
2015-12-31  NaN NaN   NaN  
2016-12-31  NaN NaN   NaN  

print pivot.loc["2014", ('goog', slice(None))]
           goog               
           open high low close
date                          
2014-12-31    1    1   1     1

【讨论】:

@jezreal - 谢谢,但结果都是 N/A,这不是我所期望的。

以上是关于访问熊猫数据透视表中元素的正确方法的主要内容,如果未能解决你的问题,请参考以下文章

熊猫数据透视表中的小计

如何删除熊猫数据透视表中的多级索引

熊猫:从数据透视表中的另一列中减去一列

为熊猫数据透视表中的每个值列定义 aggfunc

如何合并熊猫数据透视表中的多索引层?

在没有聚合的熊猫数据透视表中重复条目并重命名列行