从csv文件(python)的列中查找最大2(或n)个值[重复]

Posted

技术标签:

【中文标题】从csv文件(python)的列中查找最大2(或n)个值[重复]【英文标题】:Find max 2 (or n) values in a column from a csv file(python) [duplicate] 【发布时间】:2017-02-25 14:35:16 【问题描述】:

我想在从 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()

【问题讨论】:

看看这是否解决了它:***.com/questions/6910641/… 【参考方案1】:

更新:所有 列显示 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'])

【讨论】:

谢谢 Max,应该是对的,但我还是新手,还有一些问题。如果我没有标签,是否正确: data = pandas.read_csv(dataset, sep=',') df = pandas.DataFrame(data) max2=df[1].nlargest(2) @Giuseppe,您可以这样做:df.iloc[:, 0].nlargest(2),其中0 - 是您的列号 太好了,它可以工作了 :) 非常感谢! @Giuseppe,不客气!如果您认为 accepting 回答了您的问题,请考虑回答

以上是关于从csv文件(python)的列中查找最大2(或n)个值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

当我将 pandas 数据框保存为 csv 文件时,从 18 位长的列中截断 3 位

嵌套的json嵌入到csv python的列中

如何自动化文件路径以从多个 csv 文件的列中获取平均值?

BASH - 如何从 CSV 文件中的列中提取数据并将其放入数组中?

Python:将系列添加到数据框架中,并没有将数据放在正确的列中。

CSV 文件的列中需要 3 位数字