データ フレームの他の列に基づいて新しい pandas 列を作成する方法は?

リザ

次の df があります。

  id1      id2     id3(expected_col)
   21       4          21a
   21       4          21a
   21       4          21a 
   21       5          21b
   22       6          22a
   22       6          22a
   22       6          22a
   23       7          23a
   23       7          23a
   23       8          23b
   23       9          23c 

id1 と id2 の 2 つの列があります。前の 2 つの列の組み合わせである id3 を生成する新しい列を作成したいと思います。

整数部分は id1 列と同じですが、id2変更されるたびに変更される文字列を追加し、新しいid1に遭遇するたびにアルファベットのサイクルが "a" で再び開始されるようにします。

したがって、おそらく id1 を消去してから残りの操作を実行できますが、新しい列の文字列のアルファベットを生成する方法がわかりません。上記の df id3 は、私が期待する結果の列です。

不明な点がありましたらお知らせください。

ルート

GroupBy-Apply アプローチ使用しshift、 、ne、およびcumsum'id2' のグループ レベルで使用して変更を決定し、ascii_lowercase文字に対してマッピングします。

from string import ascii_lowercase

def combine_ids(grp, letters):
    grp = grp.ne(grp.shift()).cumsum() - 1
    return str(grp.name) + grp.map(letters)

letters = pd.Series(list(ascii_lowercase))
df['id3'] = df.groupby('id1')['id2'].apply(combine_ids, letters)

上記は、追加に必要な文字は 26 文字までであると想定しています。さらに必要な場合は、以下のような手順を使用して、繰り返し文字「aa」~「zz」を追加できます。

from itertools import product
from string import ascii_lowercase

doubles = map(''.join, product(ascii_lowercase, repeat=2))
letters = pd.Series(list(ascii_lowercase) + list(doubles))

結果の出力:

    id1  id2  id3
0    21    4  21a
1    21    4  21a
2    21    4  21a
3    21    5  21b
4    22    6  22a
5    22    6  22a
6    22    6  22a
7    23    7  23a
8    23    7  23a
9    23    8  23b
10   23    9  23c

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

pandasデータフレームの他の列に基づいて新しい列を作成します

分類Dev

データフレームの他の列に基づいて、新しいpandasデータフレーム列を作成します

分類Dev

他の列の行のファイラー値に基づいて、pandasデータフレームに新しい列を作成します

分類Dev

pandasデータフレーム内の他の列の条件と値に基づいて新しい列を作成する

分類Dev

既存の列の値に基づいてpandasデータフレームに新しい列を追加する

分類Dev

pandasデータフレームの他の列に基づいて集計列を作成します

分類Dev

別の行の条件に基づいてPandasデータフレームに新しい列を作成する最適な方法は何ですか?

分類Dev

他の列の値に基づいて、pandasデータフレームの列の値を設定します

分類Dev

pandasデータフレームの他の列の値に基づいて「Balance」列を更新する方法

分類Dev

PANDASの単一データフレームの上部と下部に基づいて新しい列を作成するにはどうすればよいですか?

分類Dev

Pandasデータフレームの他の列の値に基づいて列値をカウントする

分類Dev

他のデータフレームの比較に基づいて、列を含むPandasデータフレームを作成します

分類Dev

時系列Pandasデータフレームの他の2つのブール列に基づいて列の状態を判別する方法は?

分類Dev

各文の最初の単語に基づいて、pandasデータフレーム列の文字列のリストを新しい列に分割します

分類Dev

pandas データフレームの条件に基づいてグループの列を作成します

分類Dev

データフレームは、他の列に基づいて新しい列を作成します

分類Dev

Pandasデータフレーム-複数の条件計算に基づいて複数の列を作成します

分類Dev

他の2つのデータフレームの値に基づいて新しい列を作成する

分類Dev

複数の条件に基づいてPandasデータフレーム列を作成します

分類Dev

pandasデータフレーム:NaNまたはNAまたは\ nまたは\ tなどの条件に基づいて新しい列を作成するためのラムダ関数の適用に失敗しました。「いいえ」または「はい」

分類Dev

特定の列に基づいてPandasデータフレームの行を上にシフトする方法

分類Dev

他の行の値を検索して、新しいpandasデータフレーム列を作成する

分類Dev

pandasデータフレームの隣接する行の比率に基づいて新しい列を生成します

分類Dev

pandasデータフレームの条件に基づいて列の値をシフトする方法

分類Dev

他の行や列からの複数の条件に基づいてデータフレームに新しい列を作成しますか?nullの行を含めますか?-Python / Pandas

分類Dev

他の列の値に基づいてデータフレームに新しい列を追加する

分類Dev

pandasデータフレームは、値が別の列のgroupby合計に基づく新しい列を作成します

分類Dev

groupby 値に基づいて pandas データフレームに新しい列を追加します

分類Dev

Pandasデータフレームから、他の列のグループ化と最大値に基づいて特定の列値を返します

Related 関連記事

  1. 1

    pandasデータフレームの他の列に基づいて新しい列を作成します

  2. 2

    データフレームの他の列に基づいて、新しいpandasデータフレーム列を作成します

  3. 3

    他の列の行のファイラー値に基づいて、pandasデータフレームに新しい列を作成します

  4. 4

    pandasデータフレーム内の他の列の条件と値に基づいて新しい列を作成する

  5. 5

    既存の列の値に基づいてpandasデータフレームに新しい列を追加する

  6. 6

    pandasデータフレームの他の列に基づいて集計列を作成します

  7. 7

    別の行の条件に基づいてPandasデータフレームに新しい列を作成する最適な方法は何ですか?

  8. 8

    他の列の値に基づいて、pandasデータフレームの列の値を設定します

  9. 9

    pandasデータフレームの他の列の値に基づいて「Balance」列を更新する方法

  10. 10

    PANDASの単一データフレームの上部と下部に基づいて新しい列を作成するにはどうすればよいですか?

  11. 11

    Pandasデータフレームの他の列の値に基づいて列値をカウントする

  12. 12

    他のデータフレームの比較に基づいて、列を含むPandasデータフレームを作成します

  13. 13

    時系列Pandasデータフレームの他の2つのブール列に基づいて列の状態を判別する方法は?

  14. 14

    各文の最初の単語に基づいて、pandasデータフレーム列の文字列のリストを新しい列に分割します

  15. 15

    pandas データフレームの条件に基づいてグループの列を作成します

  16. 16

    データフレームは、他の列に基づいて新しい列を作成します

  17. 17

    Pandasデータフレーム-複数の条件計算に基づいて複数の列を作成します

  18. 18

    他の2つのデータフレームの値に基づいて新しい列を作成する

  19. 19

    複数の条件に基づいてPandasデータフレーム列を作成します

  20. 20

    pandasデータフレーム:NaNまたはNAまたは\ nまたは\ tなどの条件に基づいて新しい列を作成するためのラムダ関数の適用に失敗しました。「いいえ」または「はい」

  21. 21

    特定の列に基づいてPandasデータフレームの行を上にシフトする方法

  22. 22

    他の行の値を検索して、新しいpandasデータフレーム列を作成する

  23. 23

    pandasデータフレームの隣接する行の比率に基づいて新しい列を生成します

  24. 24

    pandasデータフレームの条件に基づいて列の値をシフトする方法

  25. 25

    他の行や列からの複数の条件に基づいてデータフレームに新しい列を作成しますか?nullの行を含めますか?-Python / Pandas

  26. 26

    他の列の値に基づいてデータフレームに新しい列を追加する

  27. 27

    pandasデータフレームは、値が別の列のgroupby合計に基づく新しい列を作成します

  28. 28

    groupby 値に基づいて pandas データフレームに新しい列を追加します

  29. 29

    Pandasデータフレームから、他の列のグループ化と最大値に基づいて特定の列値を返します

ホットタグ

アーカイブ