groupbyの最初と最後の行を比較して新しい値を作成する

wjie08

複数の値を持つデータフレームがあり、「email」列でグループ化し、最初の行と最後の行を取得して、カテゴリ列のステータスに変化があるかどうかを比較したいと思います。たとえば、カテゴリがMGRからMGRの場合、変更はありません。カテゴリがEMPからMGRに変更された場合、ステータスの変更が反映されます。

date                 email               category
13-04-2018            [email protected]     MGR
13-04-2018            [email protected]      EMP
18-04-2018            [email protected]     EMP
20-04-2018            [email protected]      MGR
11-01-2019            [email protected]     MGR
15-10-2019            [email protected]     MGR
16-11-2019            [email protected]     MGR
31-01-2020            [email protected]      EMP
02-05-2020            [email protected]      MGR
05-08-2020            [email protected]      MGR
14-02-2021            [email protected]      MGR
15-02-2021            [email protected]      MGR

次の結果を取得したい

date                 email               category    status
13-04-2018            [email protected]     MGR        no change
15-10-2019            [email protected]     MGR        no change
13-04-2018            [email protected]      EMP        change
15-02-2021            [email protected]      MGR        change
18-04-2018            [email protected]     EMP        change 
16-11-2019            [email protected]     MGR        change 
20-04-2018            [email protected]      MGR        no change
05-08-2020            [email protected]      MGR        no change
31-01-2020            [email protected]      EMP        change 
14-02-2021            [email protected]      MGR        change

次のコードを試しましたが、groupbyに基づいて最初と最後の行のみを取得しているようです。最初の行と最後の行の値を比較する方法はありますか?

#get the first and last row of the groupby
df2 = df.groupby('email', as_index=False).nth([0,-1])

どんな形の助けにも感謝します、ありがとう。

ゼバルチン

それが十分に効率的であるかどうかはわかりませんが、うまく機能します。

def check_status(group):
    selected = [False] * len(group)
    selected[0] = selected[-1] = True
    new_group = group[selected]
    new_group['status'] = 'change' if new_group.category.is_unique else 'no change'
    return new_group

print(df.groupby('email').apply(check_status).reset_index(drop=True))

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

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

編集
0

コメントを追加

0

関連記事

最後の値を新しい値と比較する方法は?

groupbyPythonの最初と最後の値の条件に基づいて新しい列を作成する

列の値が等しい場合、対応する列の最初と最後のインスタンスに基づいて新しい列を作成します

値がPythonの最後の2行と比較して継続的に減少している行を取得する方法

異なる行の値を比較して新しい変数を作成する

新しい行をTXTファイルの最後の行と比較します

新しい値と比較するために2番目から最後の値の値を保存する方法

後続の行の現在の行と比較して最初の小さい値を見つける方法は?

pandas groupbyを実行し、ある列の最後の値を別の列の最初の値で減算します

x値の最後の空の文字列を見つけて、新しい行を作成します

日時を比較して最初と最後の日付を取得する方法MySQL

リサンプル操作後の最初と最後の行の値を初期化していますか?

グループごとに、別の列の最後の値を保持する新しい列を作成します

列の値を変数と比較して、新しい列を作成します

グループ内の最後の非NA行の列から値を選択し、それを別の列に追加して新しい列を作成する方法

行の値との比較に基づいて、DataFrameに新しい列を作成します

最初と最後のオプションを使用してPowerBiで新しい変数を作成するにはどうすればよいですか?

PHP行の最初と最後の値を変更します

グループごとに最後の行を前の行と比較し、新しい列に入力します

行の最後の値を再利用し、次の値で最初の値を作成する - SQL Server

パンダ-groupbyを使用して別の列の最後のN値の合計で新しい列を作成します

ROW_NUMBERとPARTITIONBYを使用して最初と最後の行を取得する

groupbyの最初と最後の値を取得する

ファイルの最初の3行と最後の2行をコピーして、新しいファイルを作成するにはどうすればよいですか。

既存の値を下限と上限と比較して新しいパンダシリーズを作成する方法

文字列Javaの最初と最後から新しい行/スペースを削除する

groupbyの各IDの最後に欠落している行を追加する

pymongoを使用して最初と最後の日付値を取得する方法

IMPORTRANGEのすべての行の最後に新しい値を追加する方法はありますか?

TOP 一覧

  1. 1

    グラフからテーブルに条件付き書式を適用するにはどうすればよいですか?

  2. 2

    ソートされた検索、ターゲット値未満の数をカウント

  3. 3

    Unity:未知のスクリプトをGameObject(カスタムエディター)に動的にアタッチする方法

  4. 4

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  5. 5

    Ansibleで複数行のシェルスクリプトを実行する方法

  6. 6

    Reactでclsxを使用する方法

  7. 7

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  8. 8

    Windows 10 Pro 1709を1803、1809、または1903に更新しますか?

  9. 9

    Pythonを使用して同じ列の同じ値の間の時差を取得する方法

  10. 10

    PowerShellの分割ファイルへのヘッダーの追加

  11. 11

    Chromeウェブアプリのウェブビューの高さの問題

  12. 12

    BLOBストレージからデータを読み取り、Azure関数アプリを使用してデータにアクセスする方法

  13. 13

    Crashlytics:コンパイラー生成とはどういう意味ですか?

  14. 14

    GoDaddyでのCKEditorとKCfinderの画像プレビュー

  15. 15

    Windows 10の起動時間:以前は20秒でしたが、現在は6〜8倍になっています

  16. 16

    MLでのデータ前処理の背後にある直感

  17. 17

    モーダルダイアログを自動的に閉じる-サーバーコードが完了したら、Googleスプレッドシートのダイアログを閉じます

  18. 18

    reCAPTCHA-エラーコード:ユーザーの応答を検証するときの「missing-input-response」、「missing-input-secret」(POSTの詳細がない)

  19. 19

    STSでループプロセス「クラスパス通知の送信」のループを停止する方法

  20. 20

    ファイル内の2つのマーカー間のテキストを、別のファイルのテキストのセクションに置き換えるにはどうすればよいですか?

  21. 21

    ネットワークグラフで、ネットワークコンポーネントにカーソルを合わせたときに、それらを強調表示するにはどうすればよいですか?

ホットタグ

アーカイブ