Python具有相同属性的记录的最大值和最小值
我正在使用从csv文件中收集的列表或词典。我想做的是写出一个新的csv文件,其中包含与特定属性相关的最大值和最小值,例如: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 我的数据结构非常脆弱,但我尝试了几种不同的方法,包括
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