pandas或numpy redux中的基本数学函数max()帮助:用于面板[重复]

Posted

技术标签:

【中文标题】pandas或numpy redux中的基本数学函数max()帮助:用于面板[重复]【英文标题】:basic math function max() help in pandas or numpy redux: for a panel [duplicate] 【发布时间】:2014-03-26 23:02:09 【问题描述】:
In [63]:

yahoo['Range'] = yahoo['High']-yahoo['Low']
yahoo['ATR1'] = abs(yahoo['Prev Close']-yahoo['High'])
yahoo['ATR2'] = abs(yahoo['Prev Close']-yahoo['Low'])

yahoo

<class 'pandas.core.panel.Panel'>
Dimensions: 34 (items) x 804 (major_axis) x 14 (minor_axis)
Items axis: Open to Gap
Major_axis axis: 2010-12-13 00:00:00 to 2014-02-24 00:00:00
Minor_axis axis: AA to XOM

我在上面的面板中创建了项目(列)范围、ATR1 和 ATR2

我想创建另一个项目(列)... TR 并在类似的帖子中提到了这两个选项

yahoo['TR'] = yahoo[['Range', 'ATR1', 'ATR2']].max(axis=1)

#yahoo['TR'] = yahoo[['Range', 'ATR1', 'ATR2']].apply(max, axis=1)

我都试过了,但得到错误

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-64-15309b584b96> in <module>()
----> 1 yahoo['TR'] = yahoo[['Range', 'ATR1', 'ATR2']].max(axis=1)
      2 
      3 #yahoo['TR'] = yahoo[['Range', 'ATR1', 'ATR2']].apply(max, axis=1)
      4 

C:\Anaconda\lib\site-packages\pandas\core\panel.pyc in __getitem__(self, key)
    250         if isinstance(self._info_axis, MultiIndex):
    251             return self._getitem_multilevel(key)
--> 252         return super(Panel, self).__getitem__(key)
    253 
    254     def _getitem_multilevel(self, key):

C:\Anaconda\lib\site-packages\pandas\core\generic.pyc in __getitem__(self, item)
    975 
    976     def __getitem__(self, item):
--> 977         return self._get_item_cache(item)
    978 
    979     def _get_item_cache(self, item):

C:\Anaconda\lib\site-packages\pandas\core\generic.pyc in _get_item_cache(self, item)
    979     def _get_item_cache(self, item):
    980         cache = self._item_cache
--> 981         res = cache.get(item)
    982         if res is None:
    983             values = self._data.get(item)

TypeError: unhashable type: 'list'

我发布了这个问题,最初没有意识到这是一个面板而不是数据框。这两行代码是数据框的解决方案,但在这里不起作用。

【问题讨论】:

基本上 data.max(axis=1) 【参考方案1】:

查看关于描述性统计的 pandas 文档:http://pandas.pydata.org/pandas-docs/stable/basics.html#descriptive-statistics

做事

In [29]: df = DataFrame(randn(3, 3))

In [30]: df
Out[30]:
          0         1         2
0  0.745811  1.703260 -0.114727
1  0.445875  1.692970 -0.320290
2 -0.162003 -1.341548 -1.665276

[3 rows x 3 columns]

In [31]: df['a'] = df.max()

In [32]: df
Out[32]:
          0         1         2         a
0  0.745811  1.703260 -0.114727  0.745811
1  0.445875  1.692970 -0.320290  1.703260
2 -0.162003 -1.341548 -1.665276 -0.114727

[3 rows x 4 columns]

【讨论】:

我认为 OP 想要最大的行数,而不是列数。措辞模棱两可,但示例输出似乎是基于行的。 是的,没错。我只是给出示例用法,并希望 OP 能找出轴参数控制它。

以上是关于pandas或numpy redux中的基本数学函数max()帮助:用于面板[重复]的主要内容,如果未能解决你的问题,请参考以下文章

为啥使用numpy和pandas来进行数据处理?

Python之Pandas知识点

Py修行路 Pandas 模块基本用法

机器学习基础 --- pandas的基本使用

Numpy

Numpy基本操作