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'])
を参照してください。http://stackoverflow.com/questions/6910641/how-to-get-indices-of-n-maximum-values-in-a-numpy -Array – Divakar