python/pandasで部分的にそれ自体に基づいて列を計算する

ジェフ・C

Python で Pandas を学び始めて約 3 日が経ち、私を困惑させた最初の問題に遭遇しました。処理中のテーブルの各行を反復処理する必要がないため、必要なさまざまな計算を実行できましたが、次の問題で同じことを行う方法があるかどうかはわかりません。

私が作業しようとしているテーブルは、この問題の目的のために 2 列のみに要約できます。最初の列は「日付」、2 番目の列は「順序」です。「順序」列の値は、ほとんどが 0 で、いくつかの 1 と -1 が点在しています。私の質問でそれを示す方法がわかりませんが、次のようなもの...

         Date  Order
0  2017-03-15      0
1  2017-03-14      1
2  2017-03-13      0
3  2017-03-12      0
4  2017-03-11     -1
5  2017-03-10      0
6  2017-03-09      0
7  2017-03-08      1

最初は「注文」列に基づいていますが、「注文」列の値に応じて「ステータス」列にもある「ステータス」と呼ばれる別の列を追加します。

Excel のステータス列に数式を追加すると、次のようになります。 =if(order = 1, 1, if(order = -1, -1, status[from row-1]))

したがって、結果のテーブルは次のようになります。

         Date  Order  Status
0  2017-03-15      0       0
1  2017-03-14      1       1
2  2017-03-13      0       1
3  2017-03-12      0       1
4  2017-03-11     -1      -1
5  2017-03-10      0      -1
6  2017-03-09      0      -1
7  2017-03-08      1       1

ステータス列は、最初の分類の後、1 または -1 のみで終わる必要があります (ただし、それまでは 0 から始まる場合があります)。順序列は通常、1 と -1 を交互に繰り返します (点在する 0 を除く) が、順序列に 1 があり、次の行または数行の後に別の 1 が続くこともあります。 -1 の前。これは無視できる入力データ エラーですが、コードでそれを考慮する必要がある場合があります。

現在 Pandas を使用していますが、必要に応じて numpy を使用することもできます。

うまくいけば、それは十分に明らかです。下手なフォーマットはご容赦ください。そして救いの手をありがとう。

回転した

組み合わせmaskffillおよびfillna

o = df.Order
df.assign(Status=o.mask(o == 0).ffill().fillna(o).astype(int))

         Date  Order  Status
0  2017-03-15      0       0
1  2017-03-14      1       1
2  2017-03-13      0       1
3  2017-03-12      0       1
4  2017-03-11     -1      -1
5  2017-03-10      0      -1
6  2017-03-09      0      -1
7  2017-03-08      1       1

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

別の列に基づいて列の平均を計算する

分類Dev

文字列列に基づいて値を計算するBigquery

分類Dev

別の列laravelに基づいて列を計算する

分類Dev

数学的計算に基づいて新しい列を作成する

分類Dev

計算列に基づいてサブクエリ列を計算する

分類Dev

PySparkの他の列で行われた計算に基づいて新しい列を作成する方法

分類Dev

階層に基づいて列の値を計算する方法

分類Dev

列に基づいて順序を計算するパンダ

分類Dev

複数の条件に基づいて列を計算する

分類Dev

計算に基づいて列を更新する

分類Dev

セルの小数をそれ自体に基づいて変更する

分類Dev

C ++年齢に基づいてチケットの価格を計算し、それらを合計する

分類Dev

SQLServerで年のみが含まれる列に基づいて年齢を計算する

分類Dev

属性に基づいて条件付きで平均を計算する

分類Dev

平日に基づいてExcelで平均を計算する

分類Dev

user_idで分割された他の列の値に基づいて行の差を計算する方法

分類Dev

別の列に基づいて1つの列の合計を計算する

分類Dev

別の列に基づいて列の間隔の合計を計算する

分類Dev

R:列名の部分一致に基づいて行の平均を計算する

分類Dev

生年に基づいておおよその年齢を計算する方法は?

分類Dev

data.tableを使用して、条件に基づいて列の合計を計算するにはどうすればよいですか?

分類Dev

異なる列を合計し、基準に基づいて金額を乗算するにはどうすればよいですか?

分類Dev

時間列に基づいて値の合計年齢を計算する

分類Dev

PythonPandasの他の列に基づいて列をグループ化する

分類Dev

Rの行名に基づいて各列の値の合計を計算するにはどうすればよいですか?

分類Dev

2列間の計算に基づいて集計関数を作成するにはどうすればよいですか?

分類Dev

2つの列に基づいて計算の平均を集計するにはどうすればよいですか?

分類Dev

mysqlで2つの値の差を計算し、その結果に基づいてソートする

分類Dev

rの基準に基づいて変数を計算する

Related 関連記事

  1. 1

    別の列に基づいて列の平均を計算する

  2. 2

    文字列列に基づいて値を計算するBigquery

  3. 3

    別の列laravelに基づいて列を計算する

  4. 4

    数学的計算に基づいて新しい列を作成する

  5. 5

    計算列に基づいてサブクエリ列を計算する

  6. 6

    PySparkの他の列で行われた計算に基づいて新しい列を作成する方法

  7. 7

    階層に基づいて列の値を計算する方法

  8. 8

    列に基づいて順序を計算するパンダ

  9. 9

    複数の条件に基づいて列を計算する

  10. 10

    計算に基づいて列を更新する

  11. 11

    セルの小数をそれ自体に基づいて変更する

  12. 12

    C ++年齢に基づいてチケットの価格を計算し、それらを合計する

  13. 13

    SQLServerで年のみが含まれる列に基づいて年齢を計算する

  14. 14

    属性に基づいて条件付きで平均を計算する

  15. 15

    平日に基づいてExcelで平均を計算する

  16. 16

    user_idで分割された他の列の値に基づいて行の差を計算する方法

  17. 17

    別の列に基づいて1つの列の合計を計算する

  18. 18

    別の列に基づいて列の間隔の合計を計算する

  19. 19

    R:列名の部分一致に基づいて行の平均を計算する

  20. 20

    生年に基づいておおよその年齢を計算する方法は?

  21. 21

    data.tableを使用して、条件に基づいて列の合計を計算するにはどうすればよいですか?

  22. 22

    異なる列を合計し、基準に基づいて金額を乗算するにはどうすればよいですか?

  23. 23

    時間列に基づいて値の合計年齢を計算する

  24. 24

    PythonPandasの他の列に基づいて列をグループ化する

  25. 25

    Rの行名に基づいて各列の値の合計を計算するにはどうすればよいですか?

  26. 26

    2列間の計算に基づいて集計関数を作成するにはどうすればよいですか?

  27. 27

    2つの列に基づいて計算の平均を集計するにはどうすればよいですか?

  28. 28

    mysqlで2つの値の差を計算し、その結果に基づいてソートする

  29. 29

    rの基準に基づいて変数を計算する

ホットタグ

アーカイブ