ホーム>source

pandas の別の列に基づいて列の値を置き換えたいdf。具体的には、 col B == Xcol C の値を変更したい 、しかし最後の X 与えられたシーケンスで。それぞれの X's をすべて変更できます C で 。しかし、私は最後の有効な X を置き換えるだけです 。ウィズウィズそして最後の有効な値はここで理想的ですか?

ウィズウィズランダムな順序とグループで表示されます

<前>ウィズウィズ

意図された出力:

<前>ウィズウィズ mask
あなたの答え
  • 解決した方法 # 1

    あなたは shift を使うことができます   numpy.where とともに

    <前>ウィズウィズ

    出力:

    <前>ウィズウィズ

  • 解決した方法 # 2

    TL;DR

    <前>ウィズウィズ

    説明:

    <前>ウィズウィズ

    これで、 import numpy as np b1 = df["B"].shift(-1) df["C"] = np.where((df["B"]=="X") & (b1!="X"), "str" , df["C"]) のマスクを作成できます :

    <前>ウィズウィズ

    置き換える行を見つけるには、次のようにします。

    <前>ウィズウィズ

    そして最後に:

    <前>ウィズウィズ A B C 0 1 X 1 1 1 X 1 2 1 X str 3 1 D 1 4 1 A 1 5 1 A 1 6 1 X str 7 1 D 1

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ javascript - Expressjsを使用してリクエストからPOST本文を取得できません