Python 如何通过添加其他列中项目的值,将具有相同值的列附加到文件中?
我使用下面的脚本生成一个输出Python 如何通过添加其他列中项目的值,将具有相同值的列附加到文件中?,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,我使用下面的脚本生成一个输出 #import necessary packages import pandas as pd #read the files df=pd.read_table("abc.txt", sep="\t") df2=pd.read_table("xyz.txt", sep="\t") #make groups gt30 = df.groupby(['#START','#END'])['#DEPTH'].apply(lambda x: x[x>=30].count
#import necessary packages
import pandas as pd
#read the files
df=pd.read_table("abc.txt", sep="\t")
df2=pd.read_table("xyz.txt", sep="\t")
#make groups
gt30 = df.groupby(['#START','#END'])['#DEPTH'].apply(lambda x: x[x>=30].count()).rename('gt30')
gt40 = df.groupby(['#START','#END'])['#DEPTH'].apply(lambda x: x[x>=40].count()).rename('gt40')
gt50 = df.groupby(['#START','#END'])['#DEPTH'].apply(lambda x: x[x>=50].count()).rename('gt50')
#append groups
df2.merge(gt30, on='#START').merge(gt40, on='#START').merge(gt50, on='#START')
输出结果如下所示
CHR #START #END #GENE #MEAN #gt30 #gt40 #gt50
chr1 11106936 11107192 MTOR 24.4648438 74 0 0
chr1 11107388 11107655 MTOR 17.1910114 27 0 0
chr1 11108018 11108369 MTOR 29.2108269 140 82 0
chr1 11109097 11109459 MTOR 12.6104975 0 0 0
chr1 15872788 15873080 SPEN 36.9075356 162 109 100
chr1 15873083 15873203 SPEN 33.25 64 42 24
chr1 15874162 15874419 SPEN 26.0272369 73 0 0
chr1 15876191 15876757 SPEN 41.5477028 429 378 229
chr2 99551491 99551743 AFF3 41.4325409 191 149 75
chr2 99554298 99554464 AFF3 214.3433685 166 166 166
chr2 99554649 99554839 AFF3 59.5315781 155 143 134
chr2 99558760 99559106 AFF3 44.6445084 265 199 162
chr2 99560255 99560503 AFF3 25.0040321 116 48 0
chr2 99565418 99565659 AFF3 33.5684662 137 94 38
现在我想将所有“#GENE”附加在一起,并创建一个新文件,如下所示
#CHR #START #END #GENE #MEAN #gt30 #gt40 #gt50
chr1 11106936 11109459 MTOR 83.4771796 241 82 0
chr1 15872788 15876757 SPEN 36.9075356 728 529 353
这是通过添加“#MEAN、#gt30、#gt40、#gt50”的列来实现的
#开始没有变化,#结束在#结束列中更改了#基因的最后一个值。你可以按他的方式来做
不清楚您在#sum_sub
列中想要什么,您能稍微解释一下吗
(df.groupby('#GENE', sort=False).agg(MEAN=('#MEAN', 'sum'),
gt30=('#gt30', 'sum'),
gt40=('#gt40', 'sum'),
gt50=('#gt50', 'sum'),
START=('#START','first'),
END=('#END','last')).reset_index())
输出
#GENE MEAN gt30 gt40 gt50 START END
0 MTOR 83.477180 241 82 0 11106936 11109459
1 SPEN 137.732475 728 529 353 15872788 15876757
2 AFF3 418.524494 1030 799 575 99551491 99565659
这个代码很好用。。。。我已经设法与
#sum_sub