値を前の行の値と比較し、別の列(パンダ)に値を割り当てます-どのようにスピードアップしますか?

ヤエル

非常に大きなデータファイルdf(1,000万行20列以上)があります。値を同じ列の前の行の値と比較しています(df['Name'])。値が同じ場合、2番目の列(df['Run'])の値は同じままです。それ以外の場合、この値は1増加します。

以下に、出力がどのように表示されるかの例を示します。

Name       Run
e679       1
k3333      2
k3333      2
k3333      2
u772       3
u772       3
2000       4
2000       4
2000       4
...        ...

現在、私は次のコードを使用しています。

run=1
df['Run'].iloc[0]=run

for i in range(1,len(df)):
    if df['Name'].iloc[i] == df['Name'].iloc[i-1]:
         df['Run'].iloc[i] = run
    else:
         run = run+1
         df['Run'].iloc[i] = run

このコードは機能しますが、非常に低速です。同じことをするためのより効率的な方法があると思いますが、誰かがそれを経験したことがありますか?

ありがとうございました!

アンキー

pd.factorize()以下のように使用します。

print(df)
    Name
0   e679
1  k3333
2  k3333
3  k3333
4   u772
5   u772
6   2000
7   2000
8   2000

df['Run']=pd.factorize(df.Name)[0]+1
#alternative: (~df.duplicated('Name')).cumsum()
print(df)

    Name  Run
0   e679    1
1  k3333    2
2  k3333    2
3  k3333    2
4   u772    3
5   u772    3
6   2000    4
7   2000    4
8   2000    4

NaNは-1としてマークされることに注意してください

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

比較後、現在の行の値をパンダデータフレームの前の行に割り当てます

分類Dev

パンダ:次の列の値を前の列の値と比較します

分類Dev

別の列に基づいてパンダ列に値を割り当てます

分類Dev

パンダ:ルックアップを使用して、別の行の同等の値に基づいて値を割り当てます

分類Dev

パンダは列の値を割り当て、dfの別の列に依存します

分類Dev

Sparkで必要に応じて、現在の行と前の行の値を比較し、列の値を比較します

分類Dev

パンダは、別の列の値に応じて、列に異なる値を割り当てます

分類Dev

条件付きで列に値を割り当てて、別の列の値の前か後かを指定します

分類Dev

パンダはデータフレームをループし、すべての行を他のDF行と比較して、値を割り当てます

分類Dev

パンダを使用してループ内の列と変数を比較することにより、列に値を割り当てる

分類Dev

サンプルサイズが別の列の値と等しいグループのランダムサンプルに1つの値を割り当てます

分類Dev

PHPの配列を比較し、値を相互に割り当てます

分類Dev

パンダは、あるフレームの値を、選択した行の別のフレームの対応する列に割り当てます。

分類Dev

Pythonパンダを使用して、条件に基づいて行の値を別の列にコピーします

分類Dev

ネストされた配列を別の配列と比較し、値が同じ場合に割り当てます

分類Dev

パンダを使用して、1つの列の値を他の列のすべての値と比較します

分類Dev

別の列の変数に基づいて、パンダの値を列に割り当てます

分類Dev

パンダ-現在および前の行の別の列の値に基づいて計算された値を持つ列を追加します

分類Dev

カンマ区切りの値を複数の列とその横の空の列に分割して、名前をマッピングします-パンダ

分類Dev

パンダは行を反復処理し、列の値をリスト内の文字列と比較し、別の列から値を返します

分類Dev

パンダの列を複数の行に分割します。分割は別の列の値になります

分類Dev

パンダフレームの土曜日と金曜日の行の値を合計し、金曜日の行の値に割り当てます

分類Dev

パンダの既存の列の1つにあるリストの名前で新しい列を作成し、別の列のリストから値を割り当てるにはどうすればよいですか?

分類Dev

2番目のパンダdfを条件として、列に値を割り当てます。

分類Dev

パンダ:列の値を別の行の同じ列の別の値と比較して行をフィルタリングする

分類Dev

パンダ:各行内の最小値の列名を取得し、残りの列と比較して%の差を取得します

分類Dev

パンダ、別の列の値に基づいて値を減算します

分類Dev

マップ使用時のパンダの警告:DataFrameからのスライスのコピーに値を設定しようとしています

分類Dev

Groupby、パンダで1つの列の値を別の列の最大値と比較します

Related 関連記事

  1. 1

    比較後、現在の行の値をパンダデータフレームの前の行に割り当てます

  2. 2

    パンダ:次の列の値を前の列の値と比較します

  3. 3

    別の列に基づいてパンダ列に値を割り当てます

  4. 4

    パンダ:ルックアップを使用して、別の行の同等の値に基づいて値を割り当てます

  5. 5

    パンダは列の値を割り当て、dfの別の列に依存します

  6. 6

    Sparkで必要に応じて、現在の行と前の行の値を比較し、列の値を比較します

  7. 7

    パンダは、別の列の値に応じて、列に異なる値を割り当てます

  8. 8

    条件付きで列に値を割り当てて、別の列の値の前か後かを指定します

  9. 9

    パンダはデータフレームをループし、すべての行を他のDF行と比較して、値を割り当てます

  10. 10

    パンダを使用してループ内の列と変数を比較することにより、列に値を割り当てる

  11. 11

    サンプルサイズが別の列の値と等しいグループのランダムサンプルに1つの値を割り当てます

  12. 12

    PHPの配列を比較し、値を相互に割り当てます

  13. 13

    パンダは、あるフレームの値を、選択した行の別のフレームの対応する列に割り当てます。

  14. 14

    Pythonパンダを使用して、条件に基づいて行の値を別の列にコピーします

  15. 15

    ネストされた配列を別の配列と比較し、値が同じ場合に割り当てます

  16. 16

    パンダを使用して、1つの列の値を他の列のすべての値と比較します

  17. 17

    別の列の変数に基づいて、パンダの値を列に割り当てます

  18. 18

    パンダ-現在および前の行の別の列の値に基づいて計算された値を持つ列を追加します

  19. 19

    カンマ区切りの値を複数の列とその横の空の列に分割して、名前をマッピングします-パンダ

  20. 20

    パンダは行を反復処理し、列の値をリスト内の文字列と比較し、別の列から値を返します

  21. 21

    パンダの列を複数の行に分割します。分割は別の列の値になります

  22. 22

    パンダフレームの土曜日と金曜日の行の値を合計し、金曜日の行の値に割り当てます

  23. 23

    パンダの既存の列の1つにあるリストの名前で新しい列を作成し、別の列のリストから値を割り当てるにはどうすればよいですか?

  24. 24

    2番目のパンダdfを条件として、列に値を割り当てます。

  25. 25

    パンダ:列の値を別の行の同じ列の別の値と比較して行をフィルタリングする

  26. 26

    パンダ:各行内の最小値の列名を取得し、残りの列と比較して%の差を取得します

  27. 27

    パンダ、別の列の値に基づいて値を減算します

  28. 28

    マップ使用時のパンダの警告:DataFrameからのスライスのコピーに値を設定しようとしています

  29. 29

    Groupby、パンダで1つの列の値を別の列の最大値と比較します

ホットタグ

アーカイブ