python csv:获取sub

2024-10-01 11:33:46 发布

您现在位置:Python中文网/ 问答频道 /正文

以下是我的csv快照:

alex    123f    1
harry   fwef    2
alex    sef 3
alex    gsdf    4
alex    wf35    6
harry   sdfsdf  3

我想得到这个数据的子集,其中第一列(harry,alex)中发生的任何事件至少是4。因此,我希望得到的数据集是:

^{pr2}$

Tags: csv数据事件快照子集alex集是harry
2条回答

如果Python不是必须的

$ gawk '{b[$1]++;c[++d,$1]=$0}END{for(i in b){if(b[i]>=4){for(j=1;j<=d;j++){print c[j,i]}}}}' file

是的,70MB的文件没问题。在

显然,在您看到所有行之前,您无法确定哪些行是有趣的(因为最后一行可能是将某个计数从3转到4,从而使一些先前看到的行变得有趣的行,例如;-)。所以,除非你的CSV文件太大了,否则先把它全部放入内存中,作为一个列表…:

import csv

with open('thefile.csv', 'rb') as f:
  data = list(csv.reader(f))

那么,计算Python2.7有更好的方法,但是假设您仍然像我们大多数人一样使用2.6版本…:

^{pr2}$

最后进行选择循环…:

for row in data:
    if counter[row[0]] >= 4:
        print row

当然,这会将每一个有趣的行打印成一个粗略的列表(在条目周围加上方括号和引号),但是可以很容易地以您喜欢的任何方式格式化它。在

相关问题 更多 >