处理一个巨大的python data frame,有没有快速的方法实现我想要的这个功能? 举报 理由 举报 取消 现在有一个data frame 大概600W行,3列,假设列名是A,B,C. 现在需要做如下处理,如果存在这样的两行,第一行的A值等于第二行的B值,第一行的B值等于第二行的A值,则将这两行的C值都设置为1,其他的行设置为0,有没有速度快一点的方法来实现?结果类似这样:A B Ca b 1c a 0b a 1python新手求指导哈 2017年12月23日 2 条回复 1316 次浏览 Python,分析,数据,数据处理,统计
回复 ( 2 )
600万行真不大哈,内存完全放得下。
建一个词典,key是每行前两列的值构成的tuple,value是行号。
处理每一行的时候,看看词典中有没有由前两列值颠倒组成的key,若有,则将那一行和当前行的第三列都设为1。
上述方法没有考虑到key有重复的情况。
我是做java的。
这里只提供一个思路,不用python来保存数据,而利用第三方的memcached或者redis。
第一遍读文件,每一行a加分隔符加B作为key ,值为行号。
先看有没有以该key,有则把行号作为字符串 加到值部分redis可以用list类型更方便
第二遍读文件,按key查,有两个及以上行号的 可以把c置为1了
如果不限制新文件创建,其实打开这个文件,用两个文件读,也可以处理。。。。