1
私は自分のデータフレーム内の列値を逆転させたいが、個々の "groupby"レベルでのみ行う。以下は、私は同じ文字A、BまたはCに属する「フリップ」の値にしたい場所を、最小限のデモの例を見つけることができます。パンダは列単位で値を逆にします
df = pd.DataFrame({"group":["A","A","A","B","B","B","B","C","C"],
"value": [1,3,2,4,4,2,3,2,5]})
group value
0 A 1
1 A 3
2 A 2
3 B 4
4 B 4
5 B 2
6 B 3
7 C 2
8 C 5
私の所望の出力は次のようになります。(列が追加の代わりに置き換えられます唯一のいつものように
group value value_desired
0 A 1 2
1 A 3 3
2 A 2 1
3 B 4 3
4 B 4 2
5 B 2 4
6 B 3 4
7 C 2 5
8 C 5 2
、私は適切なベクトル形式のアプローチを見ていないとき、私はちょうど最終出力のためにループをいじって終わるが、私の現在のコードは私を非常に痛い)簡潔のために、多く:
for i in list(set(df["group"].values.tolist())):
reversed_group = df.loc[df["group"]==i,"value"].values.tolist()[::-1]
df.loc[df["group"]==i,"value_desired"] = reversed_group
の
パンダの達人は、私に道を示してください:)
を使用することができます!救助のための変換!私はあなたが知っていることを知っている - あなたはとても親切で、2つを区別するいくつかの問題を抱えているので、私はまた適用スタイルのアプローチを示すことができるか... –
'df.groupby( 'group')['value']。apply (λx:x [:: - 1]) '? – Zero
これは、 'values'とこの行の最後を追加した場合にのみ私にとって役に立ちました。さもなければ、エラー 'TypeError:フレームインデックスを持つ挿入された列の互換性のないインデックス'エラーがスローされました。元のインデックスとの変換の戻り値のシリーズのように見える、マルチテキスト返す適用...とにかくおかげで! –