从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 位
BASH - 如何从 CSV 文件中的列中提取数据并将其放入数组中?