2017-04-20 2 views
2

私はcsv形式のデータをpandasにインポートしました。誰かが、私が持っている列の1つで280以上の値を見つけて、別のデータフレームに入れる方法を教えてください。Pandas Dataframeの具体的な値の検索方法

import numpy as np 
import pandas as pd 
df = pd.read_csv('...csv') 

をし、データの一部が付属PICのようなものです:私は今のところ以下のコードを行っているenter image description here

答えて

2

あなたはboolean indexingが必要になります。

df1 = df[df[2] > 280] 

のみの列が追加も選択する必要がある場合loc

s = df.loc[df[2] > 280, 2] 

サンプル:

df = pd.DataFrame({0:[1,2,3], 
        1:[4,5,6], 
        2:[107,800,300], 
        3:[1,3,5]}) 

print (df) 
    0 1 2 3 
0 1 4 107 1 
1 2 5 800 3 
2 3 6 300 5 

df1 = df[df[2] > 280] 
print (df1) 
    0 1 2 3 
1 2 5 800 3 
2 3 6 300 5 

s = df.loc[df[2] > 280, 2] 
print (s) 
1 800 
2 300 
Name: 2, dtype: int64 

#one column df 
df2 = df.loc[df[2] > 280, [2]] 
print (df2) 
    2 
1 800 
2 300 
+0

よく説明されています。しかし、なぜ最後のコマンドで '[2]'が違いを生み出すのだろうか? –

+0

ええと、私の意見では、サブセットと同じです - いくつかの列だけを選択したい場合は 'df [[0,2]]を使い、1つしか選択しない場合はdf [2]を使います。 – jezrael

+2

列名を使うこともできます。たとえば、 'df [df.columnName> 280]' –

関連する問題