私はパンダのデータフレーム上で2つの異なるが非常に類似したループを実行しており、ループを回避することでこれを高速化できるようなグループ化操作があるかどうか疑問に思っています。
for x in df.var1:
df[df.var1==x, 'var2'] = np.max(df[df.var1==x, 'var2'])
つまり、の値が同じである行が複数var1
ある場合var2
、これらすべての行の値を、これらvar2
すべての行で取得される最大値に設定します。
forループなしでこれを実行できるはずだと思いますが、何らかの理由でその方法がわかりません。アイデア?
別の列の値でグループ化された、その列の最大値で列を置き換えたいようです。あなたはあなたが望むものを使用groupby()
しtransform(max)
て手に入れることができるはずです:
>>> import pandas as pd
>>> df = pd.DataFrame({"var1": [1, 1, 2, 2, 3, 3], 'var2': [1, 2, 3, 4, 5, 6]})
>>> df
var1 var2
0 1 1
1 1 2
2 2 3
3 2 4
4 3 5
5 3 6
>>> df['var2'] = df.groupby('var1').transform(max)
>>> df
var1 var2
0 1 2
1 1 2
2 2 4
3 2 4
4 3 6
5 3 6
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加