グループに基づく別の列の値に基づいて、ある列に値を作成します

ビニャミンも

今日も同様の質問をしましたが、グループでの適用は簡単だと思いましたが、思ったより難しいと思います。

だから、これが私のDataFrameだとしましょう:

   group   a     b 
0    0    'a'    3
1    0    'a'    56
2    0    'b'    7
3    0    'b'    80  
4    0    'b'    55
5    0    'f'    601
6    0    'f'    -4
7    0    'g'    33
8    0    'g'    22
9    1    'a'    3
10   1    'a'    56
11   1    'b'    7
12   1    'b'    80  
13   1    'b'    55
14   1    'f'    601
15   1    'f'    -4
16   1    'g'    33
17   1    'g'    22

私は新しい列、作成したいc値が最後の値になり、b以前の値でa同じグループ内での出力が可能必要がありますので、:

   group   a    b      c
0    0    'a'    3     nan
1    0    'a'    56    nan
2    0    'b'    7     56
3    0    'b'    80    56  
4    0    'b'    55    56
5    0    'f'    601   55
6    0    'f'    -4    55
7    0    'g'    33    -4
8    0    'g'    22    -4
9    1    'a'    3     nan
10   1    'a'    56    nan
11   1    'b'    7     56
12   1    'b'    80    56  
13   1    'b'    55    56
14   1    'f'    601   55
15   1    'f'    -4    55
16   1    'g'    33    -4
17   1    'g'    22    -4

どんな助けでも大歓迎です!

クアンホアン

これは、データに重複したインデックスがない場合に機能します。

groups = df.groupby('group')
df['c'] = df.loc[df['a']!=groups['a'].shift(-1),'b']
df['c'] = groups['c'].ffill()
df['c'] = groups['c'].shift()

出力:

    group    a    b     c
0       0  'a'    3   NaN
1       0  'a'   56   NaN
2       0  'b'    7  56.0
3       0  'b'   80  56.0
4       0  'b'   55  56.0
5       0  'f'  601  55.0
6       0  'f'   -4  55.0
7       0  'g'   33  -4.0
8       0  'g'   22  -4.0
9       1  'a'    3   NaN
10      1  'a'   56   NaN
11      1  'b'    7  56.0
12      1  'b'   80  56.0
13      1  'b'   55  56.0
14      1  'f'  601  55.0
15      1  'f'   -4  55.0
16      1  'g'   33  -4.0
17      1  'g'   22  -4.0

サンプルに示されているように、データに重複したインデックスがある場合は、次のことができます。

# save the index
idx = df.index

# remove the index
df = df.reset_index(drop=True)

groups = df.groupby('group')
df['c'] = df.loc[df['a']!=groups['a'].shift(-1),'b']
df['c'] = groups['c'].ffill()
df['c'] = groups['c'].shift()

# put the index back
df.index = idx

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

列の値に基づいてグループを作成する

分類Dev

別の文字列のグループに基づくベクトル値で新しい列を作成します

分類Dev

別の列の値に基づいて新しいrdata.table列を作成し、グループ化する

分類Dev

列の値を行に置き換え、別の列の値に基づいてグループ化します

分類Dev

別の列の値に基づいてラグを作成する

分類Dev

別の列の別の基準に基づいて列に数値のグループを追加する

分類Dev

1つの列の値に基づいて、グループ全体で別の列の値を変更します

分類Dev

別の列の値のグループに基づいて、列の値を合計します

分類Dev

別の列の値に基づいてグループを選択する

分類Dev

別の列に基づく値を使用して、各グループに固定数の行を追加します

分類Dev

SQL別の列の値に基づいてブール列を作成する方法

分類Dev

1つの列に基づいてグループ化し、別の列の合計値を取得します

分類Dev

別の列に基づいてグループ化された値で列を作成する

分類Dev

パンダ:別の列の値に基づいて2つの列をグループ化します

分類Dev

Python Pandasは列に基づいてグループ化し、最大値を取得しますが、別の列に基づいて除外します

分類Dev

ループ内の別の列の値に基づいて、列の値をnanに変更します

分類Dev

forループを使用して、別の列の値に基づいて1つの列の値を取得する

分類Dev

別の列の文字列値に基づいて新しい列を作成する

分類Dev

別の列の値に基づいて再起動するグループに沿ったシーケンスを作成します

分類Dev

列の値に基づいてグループ化する

分類Dev

別の列の値に基づいて、ある列から値をコピーします

分類Dev

既存の列に基づいてパンダ列を作成します。別の列でグループ化された列の条件付き最小値

分類Dev

別の列の値に基づいて新しい列を作成する

分類Dev

別の列の値に基づいて新しい列を作成する

分類Dev

SQLの別のテーブル列値に基づいてテーブル列を作成します

分類Dev

パンダの別の列の類似した値のグループ化に基づいて新しい列を作成します

分類Dev

列ごとに他の列グループに基づいて新しい列の値を取得する方法

分類Dev

別の列を条件として、ある列の値に基づいてデータを並べ替えます

分類Dev

別の列の因子レベルに基づいて、ある列の数値を変更します

Related 関連記事

  1. 1

    列の値に基づいてグループを作成する

  2. 2

    別の文字列のグループに基づくベクトル値で新しい列を作成します

  3. 3

    別の列の値に基づいて新しいrdata.table列を作成し、グループ化する

  4. 4

    列の値を行に置き換え、別の列の値に基づいてグループ化します

  5. 5

    別の列の値に基づいてラグを作成する

  6. 6

    別の列の別の基準に基づいて列に数値のグループを追加する

  7. 7

    1つの列の値に基づいて、グループ全体で別の列の値を変更します

  8. 8

    別の列の値のグループに基づいて、列の値を合計します

  9. 9

    別の列の値に基づいてグループを選択する

  10. 10

    別の列に基づく値を使用して、各グループに固定数の行を追加します

  11. 11

    SQL別の列の値に基づいてブール列を作成する方法

  12. 12

    1つの列に基づいてグループ化し、別の列の合計値を取得します

  13. 13

    別の列に基づいてグループ化された値で列を作成する

  14. 14

    パンダ:別の列の値に基づいて2つの列をグループ化します

  15. 15

    Python Pandasは列に基づいてグループ化し、最大値を取得しますが、別の列に基づいて除外します

  16. 16

    ループ内の別の列の値に基づいて、列の値をnanに変更します

  17. 17

    forループを使用して、別の列の値に基づいて1つの列の値を取得する

  18. 18

    別の列の文字列値に基づいて新しい列を作成する

  19. 19

    別の列の値に基づいて再起動するグループに沿ったシーケンスを作成します

  20. 20

    列の値に基づいてグループ化する

  21. 21

    別の列の値に基づいて、ある列から値をコピーします

  22. 22

    既存の列に基づいてパンダ列を作成します。別の列でグループ化された列の条件付き最小値

  23. 23

    別の列の値に基づいて新しい列を作成する

  24. 24

    別の列の値に基づいて新しい列を作成する

  25. 25

    SQLの別のテーブル列値に基づいてテーブル列を作成します

  26. 26

    パンダの別の列の類似した値のグループ化に基づいて新しい列を作成します

  27. 27

    列ごとに他の列グループに基づいて新しい列の値を取得する方法

  28. 28

    別の列を条件として、ある列の値に基づいてデータを並べ替えます

  29. 29

    別の列の因子レベルに基づいて、ある列の数値を変更します

ホットタグ

アーカイブ