Python具有相同属性的记录的最大值和最小值

Python具有相同属性的记录的最大值和最小值,python,Python,我正在使用从csv文件中收集的列表或词典。我想做的是写出一个新的csv文件,其中包含与特定属性相关的最大值和最小值,例如: field1 field2 field3 1 hi 1 2 hi 5 3 bye 2 4 bye 7 应按新csv文件中字段2中的属性列出: f1 f2 min max 1 hi 1 5 2 bye 2 7 我的数据结构非常脆弱,但我尝试了几种不同的方法,包括

我正在使用从csv文件中收集的列表或词典。我想做的是写出一个新的csv文件,其中包含与特定属性相关的最大值和最小值,例如:

field1 field2 field3
1      hi     1
2      hi     5
3      bye    2
4      bye    7
应按新csv文件中
字段2中的属性列出:

f1  f2   min   max
1   hi    1     5
2   bye   2     7
我的数据结构非常脆弱,但我尝试了几种不同的方法,包括从csv文件中读取数据。我想如果我把数据放进字典或列表中,可能有一种方法可以很容易地找到它,只要我找到最小值和最大值时可以将它输出到csv文件中

这是我试过的。我认为这是一个算法问题。底部的代码对我有用,但我不知道它们何时不再相等,因此我不确定何时将其作为min放入csv文件中;名单什么时候完成

第一次尝试:

这似乎更接近:


也许是这样的

dict_rows = {}
lines = (line.strip() for line in open(csvFile))
for line in csv.reader(lines, delimiter='\t', quoting=csv.QUOTE_NONE):
    key = line[1]
    value = line[5]
    prev = dict_rows.get(key, (value, value))
    dict_rows[key] = (min(prev[0], value), max(prev[1], value))
for key, value in dict_rows.items():
    print key, value[0], value[1]

使用熊猫。这是一个样品

import pandas as pd
df = pd.read_csv(filename)
df.groupby('field2').agg([np.min, np.max]).to_csv(out_filename)
这项工作:

data={}
with open(fn) as f:
    reader=csv.reader(f, delimiter='\t', quoting=csv.QUOTE_NONE)
    header=next(reader)
    for row in reader:
        data.setdefault(row[1], []).append(int(row[2]))

print 'key\tmin\tmax'    
for k in data.keys():
    print '{}\t{}\t{}'.format(k, min(data[k]), max(data[k]))    
使用示例数据打印:

key min max
bye 2   7
hi  1   5

请清理您的示例。仍然需要大量清理。这真是一团糟。这正是我想的,但不知道如何实施。谢谢!也感谢我对我的拙劣尝试视而不见,并花时间阅读我正在尝试做的事情:)。你救了我几个小时的痛苦。
data={}
with open(fn) as f:
    reader=csv.reader(f, delimiter='\t', quoting=csv.QUOTE_NONE)
    header=next(reader)
    for row in reader:
        data.setdefault(row[1], []).append(int(row[2]))

print 'key\tmin\tmax'    
for k in data.keys():
    print '{}\t{}\t{}'.format(k, min(data[k]), max(data[k]))    
key min max
bye 2   7
hi  1   5