使用pandas在python中处理数据

时间:2018-11-08 14:34:17

标签: python pandas

我有一个大文本文件,例如这个小例子:

小例子:

AAMP    chr2    219130810   219134433   transcript
AAMP    chr2    219132103   219134868   transcript
AARS    chr16   70286198    70323446    transcript
AARS    chr16   70287359    70292118    transcript
AARS    chr16   70286198    70323446    transcript
AAMP    chr2    219130810   219134433   transcript
AARS2   chr6    44267391    44281063    transcript

我想基于3列(columns 2, 3 and 4)对行进行分组。实际上,如果columns 2, 3 and 4中有2条或更多行具有相同的值,我只想获得其中的一行。对于小示例,预期输出将如下所示:

AAMP    chr2    219130810   219134433   transcript
AAMP    chr2    219132103   219134868   transcript
AARS    chr16   70286198    70323446    transcript
AARS    chr16   70287359    70292118    transcript
AARS2   chr6    44267391    44281063    transcript

我正在尝试使用pythonpandas中进行此操作。如下:

data = pd.read_csv("myfile")
df = pd.DataFrame(data)
res = df.groupby([0, 1, 2])
res.to_csv('outfile.txt', index=False)

,但不会返回正确的结果。你知道如何解决吗?

1 个答案:

答案 0 :(得分:0)

我发布的链接已经有答案,但是可以解决这个特定的类似问题

std::begin(result)

输出:

import pandas as pd
a='''AAMP chr2 219130810 219134433 transcript
AAMP chr2 219132103 219134868 transcript
AARS chr16 70286198 70323446 transcript
AARS chr16 70287359 70292118 transcript
AARS chr16 70286198 70323446 transcript
AAMP chr2 219130810 219134433 transcript
AARS2 chr6 44267391 44281063 transcript'''

df=pd.DataFrame([i.split(' ') for i in a.split('\n')])
df.groupby([0,1,2]).first().reset_index()