[英]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-2)將是1,因為2大於1。
在5、7、10的情況下,我想將此遞增序列計為2,(5至7)和(7至10)
我還想計算實際上對序列有貢獻的范圍或值,以及它們發生的位置,例如,即使(6到10)僅連續1向上,但由於移動為14( 20-6)。 關於序列發生的時間,我想記錄數組索引的位置,或可能附加到另一列中數字的日期。
使用excel,我會將這個數組傳遞給一個函數,並說是否Element(0)> element(1)移至element 2、3,依此類推,然后當我記錄該值沿負方向下降時,求和這些價值觀。
或者,如果我按照單元格的方式進行操作,那么我可以說(活動單元格值)是否為負,請使用.offset將兩個值相加。
但是我不確定如何使用熊貓從行或列中從行或列中獲取兩個或多個值,就像我使用offset一樣?
非常感謝,喬希。
更新>>感謝您的更新,我將添加更多詳細信息
“
|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到2的前兩個點將為+1,如下所示:
|產品| 價格| | 產品A | 0 | | 產品B | 1 | | 產品C | -1 | | 產品D | 4 | | 產品E | 2 | | 產品F | 3 | | 產品G | -4 | | 產品H | 14 | | 產品一| -8 | | 產品H | -4 | | 產品一| -3 |
然后,我想將這些移動分為幾列,以便進行匯總,並查看特定產品移動一定量的次數。
_
|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 |
_
接下來是問題(2),我想計算連續連續向上或向下移動的次數,並以與上面相同的格式表示它們|連續1 | 連續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]中:s = pd.Series([1、2、1、5、7、10、6、20、12、7、4])
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
In [5]: (s.diff() < 0).sum()
Out[5]: 5
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
這應該已經由DataFrame或Series上的Index完成。
您應該發布示例示例中預期輸出的具體示例。 如果要對這些行進行任何處理,則可能必須先轉置DataFrame。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.