这是我的csv快照:
alex 123f 1
harry fwef 2
alex sef 3
alex gsdf 4
alex wf35 6
harry sdfsdf 3
Run Code Online (Sandbox Code Playgroud)
我想得到这个数据的子集,其中第一列(哈里,亚力)中出现的任何东西至少为4.所以我希望得到的数据集是:
alex 123f 1
alex sef 3
alex gsdf 4
alex wf35 6
Run Code Online (Sandbox Code Playgroud)
很明显,在看到所有行之前,你无法确定哪些行是有趣的(因为最后一行可能是将一些计数从三变为四,从而使一些先前看到的行变得有趣,例如;-).因此,除非您的CSV文件非常庞大,否则请将其全部存入内存,首先,作为列表...:
import csv
with open('thefile.csv', 'rb') as f:
data = list(csv.reader(f))
Run Code Online (Sandbox Code Playgroud)
然后,做计数 - Python 2.7有一个更好的方法,但假设你像我们大多数人一样仍然在2.6 ...:
import collections
counter = collections.defaultdict(int)
for row in data:
counter[row[0]] += 1
Run Code Online (Sandbox Code Playgroud)
最后做选择循环......:
for row in data:
if counter[row[0]] >= 4:
print row
Run Code Online (Sandbox Code Playgroud)
当然,这会将每个有趣的行打印为一个粗略的列表(方括号和项目周围的引号),但很容易以您喜欢的任何方式格式化它.
| 归档时间: |
|
| 查看次数: |
2138 次 |
| 最近记录: |