我可以读取.csv文件的哪个行/列,就像列表一样,以便使用Python比较/操作单个单元格和行吗?

问题描述

我正在处理一个带有〜130,000行的.csv文件。我首先从该原始文件删除了一堆无关紧要的列,然后将相关数据移动到具有“ id”,“ alphaseq”和“ betaseq”列的新.csv文件中。 Currently,the file looks like this:

我的主要目标是合并具有重复ID的行。例如,我希望将id8的行读取为id8,DFV,DEF。我不在乎删除多余的行。 我想使用的逻辑是: if currentRow id = nextRow id:然后检查下一行是否具有alphaseq或betaseg,并进行相应替换。我现在的问题是,我不知道如何进行初始currentRow ID与nextRow ID的比较。有没有办法(就像在Java中一样,我将使用数据[0] [1检查特定值])比较第一行和下一行的ID?我尝试将数据放入列表data=list(csv.reader(csvDataFile))中,然后找到值,但是该行给我一个错误。我也尝试过使用xlrd库无济于事。 任何帮助表示赞赏!谢谢。

解决方法

我希望这就是您要寻找的!

data.csv

id,alphaseq,betaseq
id7,FSW
id8,DEF
id8,DFV,id9,WES
id9,DGQ,id10,HGF,id11,DXA,CGR

solution.py

#!/usr/bin/python

import pandas as pd

df = pd.read_csv('./data.csv',header=0,names=['id','alphaseq','betaseq'])
df = df.groupby(['id'])['alphaseq','betaseq'].first()
df.fillna('',inplace=True)
print df

输出:

     alphaseq betaseq
id                   
id10      HGF        
id11      DXA     CGR
id7               FSW
id8       DFV     DEF
id9       DGQ     WES