2017-03-01 11 views
1

私は1000行10列のパンダデータフレームを持っているとしましょう。各行を反復せずにpandasデータフレームの値にアクセスする方法

i1からi5までの5つの整数列と5つの文字列があります。シリーズでアップ汚れる取得 -

は、どのように私は私がきれい値にアクセスされなかったので、私は最大値と最小演算子を使用してトラブルを抱えた

MAX(i1,i2,i3,i4,i5) - MIN(i1,i2,i3,i4,i5) 

として定義されるDIFFと呼ばれる新しい列を作成することができます。私はオンラインを見た他の例では、人々は、セルの値を取得するために

mydf.iloc[x]['SOME_COL'] 

をしていたが、この例では、私はちょうどすべてを一度にすべての行のための新しい列を計算したい、行を反復処理する必要はありません。

答えて

1

あなたの数値列は、最初の5と仮定すると、あなたが使用して目的の列を取得することができます:あなたは最大を取っている中、本当に興味がどのような場合

df.ix[:, 0:5].max(axis=1) - df.ix[:, 0:5].min(axis=1)

1

は - 数値カラムの分、あなたはちょうどfigure out which columns are numericであることができ、それらの上でmax - minを実行します。このように:

>> df 
    i1 i2 i3 i4 i5 str_col_1 str_col_2 
0 1 2 3 4 5   a   b 
1 1 2 3 4 5   a   b 
2 1 2 3 4 5   a   b 
3 1 2 3 4 5   a   b 
4 1 2 3 4 5   a   b 

>> numerics = ['int16', 'int32', 'int64', 'float16', 'float32', 'float64'] 
>> numeric_cols = df.select_dtypes(include=numerics) 
>> numeric_cols.max(axis=1) - numeric_cols.min(axis=1) 

0 4 
1 4 
2 4 
3 4 
4 4 
dtype: int64 
+0

私は非常に有用であることがわかります!私の場合、整数列は静的であり、先験的に知られていました。 –

関連する問題