我有一个大的tab separated
文件,如下所示:
small example
:
CHTOP 237 122
CHTOP 64 53
CHTOP 64 122
RPS27 986 66
RPS27 986 50
RPS27 986 227
我想根据第一列对行进行分组,并对第二列中属于同一组的所有数字求和,对第三列中的数字也这样做。例如,我们有两组预期输出为:
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)
你知道怎么修吗?
几个观察结果:
- 由于
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)