我有一个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)
您知道如何解决吗?
答案 0 :(得分:0)
几个观察结果:
myfile.txt
中没有标题行,因此我们需要将其告知pandas
,否则第一行将被视为标题。'ID'
列之类的东西。要按ID对行进行分组,请改用列号(0)。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)