问题描述
我正在处理一个带有〜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