我有一个制表符分隔的文本文件,例如:
small example
:
chr15 60644581 60644675 ANXA2 ENST00000332680.4 annotated
chr15 60643922 60644018 ANXA2 ENST00000332680.4 annotated
chr15 60643391 60643450 ANXA2 ENST00000332680.4 annotated
chr15 60641273 60641396 ANXA2 ENST00000332680.4 annotated
chr15 60639831 60639888 ANXA2 ENST00000332680.4 annotated
chr14 25443870 25444024 STXBP6 ENST00000550887.1 annotated
chr14 25326232 25326363 STXBP6 ENST00000550887.1 annotated
chr14 25325141 25325307 STXBP6 ENST00000550887.1 annotated
chr14 25288242 25288400 STXBP6 ENST00000550887.1 annotated
我想做另一个有6列但更少行的制表符分隔文件。事实上,我想总结一下这些行。具有相同第4列的行必须汇总在一行中事实上,首先我需要根据第4列对行进行分组。新行具有相同的第1列、第4列、第5列和第6列,但第2列来自每组的第一行,第3列来自每组的最后一行。在小示例中,我们有两个基于第4列的组,因此对于第一个组,我们将有这一行:
^{pr2}$小例子的预期输出如下:
expected output
:
我尝试使用下面的命令在python中执行此操作,但是它没有返回预期的输出。你知道怎么修吗?在
import pandas as pd
p = pd.read_csv("myfile.txt", sep='\t')
data = p.groupby('4th column')
mylist = []
for i in range(len(data)):
new_line = 'data[0], data[1], data[2], data[3], data[4], data[5]'
mylist.append(new_line)
df = pd.DataFrame(mylist)
df.to_csv('outfile.txt', sep='\t', index=None, header=False)
您没有指定第1列、第5列和第6列的分组值应该是什么,所以我假设任何值都可以,并将使用第一列作为第二列。在
您需要的是groupby之后的聚合,它将给出正确的值。将{column name:aggregation function name}对的字典传递给agg,尤其是{}。在
相关问题 更多 >
编程相关推荐