处理一个巨大的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 条回复 1260 次浏览

发起人:一步拉稀莫为奇 初入职场

此账号已作废

回复 ( 2 )

  1. 王赟 Maigo
    理由
    举报 取消

    600万行真不大哈,内存完全放得下。

    建一个词典,key是每行前两列的值构成的tuple,value是行号。

    处理每一行的时候,看看词典中有没有由前两列值颠倒组成的key,若有,则将那一行和当前行的第三列都设为1。

    上述方法没有考虑到key有重复的情况。

  2. dwangel
    理由
    举报 取消

    我是做java的。

    这里只提供一个思路,不用python来保存数据,而利用第三方的memcached或者redis。

    第一遍读文件,每一行a加分隔符加B作为key ,值为行号。

    先看有没有以该key,有则把行号作为字符串 加到值部分redis可以用list类型更方便

    第二遍读文件,按key查,有两个及以上行号的 可以把c置为1了

    如果不限制新文件创建,其实打开这个文件,用两个文件读,也可以处理。。。。

我来回答

Captcha 点击图片更换验证码