簡體   English   中英

使用pandas數據框中的多個行或列值進行計算

[英]using more than one row or column value in a pandas dataframe for a calculation

我對excel如此滿意的原因之一是,我可以輕松地傳遞一系列值或數組,並在計算中使用這些值中的一個或多個。

例如,說我有數組[1、2、1、5、7、10、6、20、12、7、4]

我可能要計算:

  1. 連續向上或向下序列的數量(例如1-2)將是1,因為2大於1。

  2. 在5、7、10的情況下,我想將此遞增序列計為2,(5至7)和(7至10)

  3. 我還想計算實際上對序列有貢獻的范圍或值,以及它們發生的位置,例如,即使(6到10)僅連續1向上,但由於移動為14( 20-6)。 關於序列發生的時間,我想記錄數組索引的位置,或可能附加到另一列中數字的日期。

使用excel,我會將這個數組傳遞給一個函數,並說是否Element(0)> element(1)移至element 2、3,依此類推,然后當我記錄該值沿負方向下降時,求和這些價值觀。

或者,如果我按照單元格的方式進行操作,那么我可以說(活動單元格值)是否為負,請使用.offset將兩個值相加。

但是我不確定如何使用熊貓從行或列中從行或列中獲取兩個或多個值,就像我使用offset一樣?

非常感謝,喬希。

更新>>感謝您的更新,我將添加更多詳細信息

  1. 基本上,每個產品都有一組值,我有多個產品,其中產品位於一列中,並且與該產品相關聯的是涉及價格的多個數字。 目前,我的桌子的布局如下所示,但是同一產品可能會在不同的日期出現在多行中:

|product    | price |
| Product A |  1    |
| Product B |  2    |
| Product C |  1    |
| Product D |  5    |
| Product E |  7    |
| Product F |  10   |
| Product G |  6    |
| Product H |  20   |
| Product I |  12   |
| Product H |  7    |
| Product I |  4    | 
  1. 然后,與第一點一樣,我想計算從上一點開始連續向上和向下的序列數。 對於從1到2的前兩個點將為+1,如下所示:

    |產品| 價格| | 產品A | 0 | | 產品B | 1 | | 產品C | -1 | | 產品D | 4 | | 產品E | 2 | | 產品F | 3 | | 產品G | -4 | | 產品H | 14 | | 產品一| -8 | | 產品H | -4 | | 產品一| -3 |

  2. 然后,我想將這些移動分為幾列,以便進行匯總,並查看特定產品移動一定量的次數。

_

|product    | price | down -3 |down -2 |down -1 |up/down 0 |up 1     | 
| Product A |  1    |    0    |   0    |   0    |    0     |   0     | 
| Product B |  2    |    0    |   0    |   0    |    0     |   1     | 
| Product C |  1    |    0    |   0    |   1    |    0     |   0     | 
| Product D |  5    |    0    |   0    |   0    |    0     |   0     | 
| Product E |  7    |    0    |   0    |   0    |    0     |   0     | 
| Product F |  10   |    0    |   0    |   0    |    0     |   0     | 
| Product G |  6    |    0    |   0    |   0    |    0     |   0     | 
| Product H |  20   |    0    |   0    |   0    |    0     |   0     | 
| Product I |  12   |    0    |   0    |   0    |    0     |   0     | 
| Product H |  7    |    0    |   0    |   0    |    0     |   0     | 
| Product I |  4    |    1    |   0    |   0    |    0     |   0     |

_

  1. 接下來是問題(2),我想計算連續連續向上或向下移動的次數,並以與上面相同的格式表示它們|連續1 | 連續2 | 在列等中

  2. 接下來是問題(3),我想看看值的范圍和發生連續向上運動的日期。 例如,產品C,D和E(假設產品C,D和E的價格日期為2014-01-01、2014-01-02和2014-01-03。這些產品顯示出3個上升趨勢行,值是1、5、7。所以我想展示一下。

_

|products |dates                    | values  |
|C, D, E  | 2014-01-01 to 2014-01-03| 1, 5, 7 |

綜上所述

  • 我希望看到一天到第二天產品價格的變化(同一產品可以在不同的日期以不同的價格出售)。
  • 然后,我想查看一個產品移動1點的次數,而不是同一產品移動20點的次數。 然后,我可能會看到這樣的模式:產品價格不會經常變化,但是當價格上漲時,價格會大幅上漲。 或者我可以通過總結價格的變化來看到,產品價格交替出現的情況通常是先下降3點,然后再上升3點,所以它是周期性的。
  • 最后,我想看看價格何時移動3點(日期),以及價格在發生移動時的價值(1、5、7)。

在[1]中:s = pd.Series([1、2、1、5、7、10、6、20、12、7、4])

1:增加次數

In [3]: s.diff() > 0
Out[3]: 
0     False
1      True
2     False
3      True
4      True
5      True
6     False
7      True
8     False
9     False
10    False
dtype: bool

In [4]: (s.diff() > 0).sum()
Out[4]: 5

2:減少次數:

In [5]: (s.diff() < 0).sum()
Out[5]: 5

3a:變更的大小:

In [6]: s.diff()
Out[6]: 
0    NaN
1      1
2     -1
3      4
4      2
5      3
6     -4
7     14
8     -8
9     -5
10    -3
dtype: float64

3a:更改位置:

這應該已經由DataFrame或Series上的Index完成。

您應該發布示例示例中預期輸出的具體示例。 如果要對這些行進行任何處理,則可能必須先轉置DataFrame。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM