我有几个包含数据的文件,我想将它们汇总为一个。 摘要数据框包含以下列: -序列 -control1 -control2 -control3 -knochdown1 -knochdown2 -knochdown3
所有文件都包含几个序列以及每个序列的计数。
我希望摘要包含唯一的序列和一个计数(如果存在序列),否则为NAN。
我按组分组并汇总了这些组,我希望将其包括在摘要中。有没有更简单的方法可以做到这一点?
我尝试使用merge,concat,update,但计数从未分配给序列,而是被追加了。
def get_unique():
unique_path=output_folder(path+'/edgeR_dataframe')
files= get_files_2(path+'/unique_miRNA', 'uni*bed')
x1=pd.DataFrame(columns=['sequences', 'unc1', 'unc2','unc3', 'sm31','sm32', 'sm33'])
merged_xins=pd.DataFrame(columns=['sequences', 'unc1', 'unc2', 'unc3', 'sm31', 'sm32', 'sm33'])
#x2=x2.set_index('sequences')
for file in files:
df=pd.read_csv(path+'/unique_miRNA/'+file,
sep='\t',
engine='python',
usecols=[6,7])
df.rename(columns={'6':'sequences'}, inplace=True)
df['7']=df['7'].round(3)
motif=file.split('_')[1] #name of file
#print(motif.split('-')[1])
columnname=motif.split('-')[1] #nmae of column
if 'x1' in motif and motif in file:
df.rename(columns={'7':columnname}, inplace=True)
x1=x1.append(df, ignore_index=True)
col={'unc1':'sum', 'unc2': 'sum', 'unc3':'sum', 'sm31':'sum', 'sm32':'sum', 'sm33':'sum' }
g=xins.groupby(xins['sequences'])
for name, group in g:
print (name)
print (group.fillna(0).aggregate(col))
get_unique()
我不知道如何将Groupby.dataframe转换为“正常”的帧。 序列control1 control2 control3组合1组合2组合3 TGAGATCATTATTCAAGCTCTTA 3.99 3.22 2.09 NAN 0.02 NAN AGGCTTGGATTGTGATCTC 0.02 1.03 0.56 2.89 0.34 NAN AGGGCTTGGATTGTGATCTC 0.42 NAN 0.70 NAN 3.04 NAN TGCAACAAGTTGGGACTTA 2.50 NAN 9.34 NAN 6.34 3.76 TGGTTGATGGATTTTCTGCATTGAT NAN 6.80 4.56 6.78 7.32 NAN
编辑
这是我想出的代码:
def get_unique():
unique_path=output_folder(path+'/edgeR_dataframe')
files= get_files_2(path+'/unique_miRNA', 'uni*bed')
x1=pd.DataFrame(columns=['sequences', 'unc1', 'unc2', 'unc3', 'sm31', 'sm32', 'sm33'])
xins=pd.DataFrame(columns=['sequences', 'unc1', 'unc2', 'unc3', 'sm31', 'sm32', 'sm33'])
merged_xins=pd.DataFrame(columns=['sequences', 'unc1', 'unc2', 'unc3', 'sm31', 'sm32', 'sm33'])
for file in files:
df=pd.read_csv(path+'/unique_miRNA/'+file,
sep='\t',
engine='python',
usecols=[6,7])
df.rename(columns={'6':'sequences'}, inplace=True)
df['7']=df['7'].round(3)
motif=file.split('_')[1] #name of file
columnname=motif.split('-')[1] #nmae of column
if 'x1' in motif and motif in file:
df.rename(columns={'7':columnname}, inplace=True)
x1=x1.append(df, ignore_index=True)
elif 'xins' in motif and motif in file:
df.rename(columns={'7':columnname}, inplace=True)
xins=xins.append(df, ignore_index=True)
col={'unc1':'sum', 'unc2': 'sum', 'unc3':'sum', 'sm31':'sum', 'sm32':'sum', 'sm33':'sum'}#,'sequences':'first'}
grouped_xins=xins.groupby(xins['sequences']).aggregate(col)
grouped_x1=x1.groupby(xins['sequences']).aggregate(col)
get_unique()