2016-10-16 12 views
1

csvファイルからインポートされた列の最大値を探したいとします。 (?私はそれがまた最高に関連する左の列の値を出力しました、なぜ)私はこのコードを使用し、最大値の場合 :csvファイル(python)の列に最大2(またはn)の値を見つける

data = pandas.read_csv(dataset, sep=',', usecols=[1]) 
maxValue=data.max(axis=0)[1] 

は、どのように私は最初の2(またはn)の最大値を取得することができます(パンダ、scipyまたはnumpyを使用して)? 私はそうしようとしたが、動作しません:

secondM=data[data[1]!=maxValue][data[1]].max() 
+2

を参照してください。http://stackoverflow.com/questions/6910641/how-to-get-indices-of-n-maximum-values-in-a-numpy -Array – Divakar

答えて

1

UPDATE:

In [393]: df 
Out[393]: 
    a b c 
0 2 9 9 
1 4 8 0 
2 8 6 3 
3 0 8 3 
4 3 6 0 

In [394]: N = 2 
    ...: pd.DataFrame([df[c].nlargest(N).values.tolist() for c in df.columns], 
    ...:    index=df.columns, 
    ...:    columns=['{}_largest'.format(i) for i in range(1, N+1)]).T 
    ...: 
Out[394]: 
      a b c 
1_largest 8 9 9 
2_largest 4 8 3 

In [395]: N = 3 
    ...: pd.DataFrame([df[c].nlargest(N).values.tolist() for c in df.columns], 
    ...:    index=df.columns, 
    ...:    columns=['{}_largest'.format(i) for i in range(1, N+1)]).T 
    ...: 
Out[395]: 
      a b c 
1_largest 8 9 9 
2_largest 4 8 3 
3_largest 3 8 3 

OLD答え:

Nにすべて列の最大値を示すため
より一般的なソリューション

1つの列に最大値2(またはn)を使用したいとします(usecols=[1]を使用した場合):

In [279]: df 
Out[279]: 
    a b c 
0 1 0 2 
1 0 7 7 
2 7 7 9 
3 5 1 6 
4 7 0 3 
5 4 0 4 
6 0 6 1 
7 8 3 6 
8 2 8 8 
9 2 9 2 

In [280]: df['a'].nlargest(2) 
Out[280]: 
7 8 
2 7 
Name: a, dtype: int32 

注:CSVファイルにラベル(列名)を持っていない場合は、あなたがそれをこのように読むことができます(あなたが唯一の二(1を読みたいと仮定)とから4番目(3)の列CSVファイル):これはそれを解決するかどうか

df = pd.read_csv(r'/path/to/file.csv', sep=',', usecols=[1,3], 
       header=None, names=['col1','col2']) 
+0

ありがとうマックス、それは正しいはずですが、私は全く新しく、まだいくつかの問題があります。私はラベルを持っていない場合、それは正しいですか: – Joe

+0

data = pandas.read_csv(dataset、sep = '、') df = pandas.DataFrame(data) max2 = df [1] .nlargest(2) – Joe

+0

@ 'df.iloc [:, 0] .nlargest(2)'、 '0'はあなたのカラム番号です。 – MaxU

関連する問題