汇总以制表符分隔的熊猫文件

时间:2018-11-30 13:12:07

标签: python

我有一个tab separated大文件,如下所示:

small example

CHTOP   237 122
CHTOP   64  53
CHTOP   64  122
RPS27   986 66
RPS27   986 50
RPS27   986 227

我想根据第一列对行进行分组,并对第二列中属于同一组的所有数字求和,并对第三列中的数字执行相同的操作。例如小例子,我们有2组 预期的输出将是:

expected output

CHTOP   365 297
RPS27   2958    343

我在python中使用了pandas,但它不返回3列文件。

import pandas as pd
df = pd.read_csv('myfile.txt',sep=None)
df = df.groupby(['ID']).cumcount()
df.to_csv('result.txt', sep='\t', index=None)

您知道如何解决吗?

1 个答案:

答案 0 :(得分:0)

几个观察结果:

  1. 由于myfile.txt中没有标题行,因此我们需要将其告知pandas,否则第一行将被视为标题。
  2. 由于未命名列,因此没有'ID'列之类的东西。要按ID对行进行分组,请改用列号(0)。
  3. 要汇总属于同一组的行,请使用sum(),而不要使用cumcount()

此外,最好声明myfile.txt是制表符(而不是逗号)分隔的,因为C引擎无法自动检测到分隔符。

这是一个建议的解决方案:

import pandas as pd
df = pd.read_csv('myfile.txt', sep='\t', header=None)
df = df.groupby(0).sum()
df.to_csv('result.txt', sep='\t', header=None)