【问题标题】:manipulating the data in python using pandas [duplicate]使用熊猫在python中操作数据[重复]
【发布时间】:2019-04-12 02:06:46
【问题描述】:

我有一个像这个小例子这样的大文本文件:

小例子:

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 中的两行或多行具有相同的值,我只想得到其中一行。对于这个小例子,预期的输出如下所示:

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

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

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

但它不会返回正确的结果。你知道怎么解决吗?

【问题讨论】:

  • 为什么输出中有最后一行?
  • @mad_ - 我认为绝对不是。
  • @jezrael 在我看来是一样的。我看不出有逻辑上的区别。
  • subset 参数到 drop_duplicats 是您所需要的
  • @mad_ - 很抱歉,我错了

标签: python pandas


【解决方案1】:

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

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()

输出:

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

【讨论】:

    猜你喜欢
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-31
    相关资源
    最近更新 更多