我想查找从csv文件导入的列中的最大值。 对于最大值,我使用了这段代码(我看到它也打印了与最大值相关的左栏的值,为什么?):
data = pandas.read_csv(dataset, sep=',', usecols=[1])
maxValue=data.max(axis=0)[1]
如何获得前2个(或n个)最大值(使用pandas,scipy或numpy)? 我试过了,但没有用:
secondM=data[data[1]!=maxValue][data[1]].max()
答案 0 :(得分:2)
更新:显示所有列的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
OLD回答:
我假设您希望单个列具有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文件中的(3
)列:
df = pd.read_csv(r'/path/to/file.csv', sep=',', usecols=[1,3],
header=None, names=['col1','col2'])