输入文件
ID,ROLLNO,AMOUNT,COUNT
1,0700,1500,10
2,900,500,3
3,0700,500,10
4,900,150,9
5,0700,1000,10
6,01620,80,5
7,0700,1000,10
8,0700,1000,10
我必须找到那些ROLLNO
和AMOUNT
最COUNT
的AMOUNT
。例如,对于ROLLNO
900
AMOUNT
150
具有大多数COUNT
,因此应该在输出中出现。
同样,如果ROLLNO
具有相同的COUNT
值,则必须对相应的AMOUNT
求和以给出结果。例如,对于ROLLNO
0700
,所有的COUNT
都是相同的,所以它的AMOUNT
应该是1500+500+1000+1000+1000 = 5000
预期的输出是这样的
ID,ROLLNO,COUNT,AMOUNT
6,900,9,150
5,01620,5,80
2,0700,10,5000
最好的办法是什么?任何帮助都将不胜感激。你知道吗
编辑:我的错。身份证在这里不重要。我只是提出了一些价值观,仅此而已。你知道吗
下面是一个使用标准库中的
collections.defaultdict
和itertools.groupby
的解决方案。你知道吗如果需要特定的格式,可以使用
pandas
。你知道吗如果您想坚持使用纯python,可以使用字典:
更新:由于这可能不清楚,将dictionary键设为ROLLNO值将强制执行唯一约束:对于出现的每个ROLLNO值,dictionary dct将在第四列(COUNT)中对值最大的行进行排序
如果
pandas
是可行的,那么应该这样做:请注意,这并不能解决ID的问题,因为您不清楚如何确定它。你知道吗
如果有大量
csv
文件,可以利用chunksize
参数:上面的示例将一次读取文件10行并处理它们,最后处理所有这些行的组合。你知道吗
相关问题 更多 >
编程相关推荐