更新: 为 所有 列显示 N 个最大值的更通用解决方案:
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
旧答案:
我假设您希望单个列有 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) 和第四个 (@ CSV 文件中的 987654326@) 列):
df = pd.read_csv(r'/path/to/file.csv', sep=',', usecols=[1,3],
header=None, names=['col1','col2'])