我已经获得了一个导入模板,它是一个包含指定为True或False的探测名称的表(如果以后将用于QC目的),例如:
ProbeName QC
probe 1 True
probe 2 True
probe 3 True
probe 4 False
probe 5 False其次,我有一个导入的示例列表,其中包括作为合并点的探针名称和探针的值。
第二个导入如下所示:
SampleName ProbeName Value
sample 1 probe 1 0
sample 1 probe 2 0
sample 1 probe 3 0
sample 1 probe 4 0
sample 1 probe 5 0
sample 2 probe 1 0
sample 2 probe 2 0
sample 2 probe 3 0
sample 2 probe 4 0
sample 2 probe 5 0合并在一起,目前如下所示:
SampleName ProbeName Value QC
sample 1 probe 1 0 True
sample 1 probe 2 0 True
sample 1 probe 3 0 True
sample 1 probe 4 0 False
sample 1 probe 5 0 False
sample 2 probe 1 0 True
sample 2 probe 2 0 True
sample 2 probe 3 0 True
sample 2 probe 4 0 False
sample 2 probe 5 0 False等等。
索引默认为行数。我使用以下代码完成了此操作:
template = pd.read_csv("Template.txt", sep='\t') # importing template
datain = pd.read_csv("Data.txt", sep = '\t') # import sample data
data = pd.merge(datain, template, how='left') # merge template and sample data我试图使示例名称成为索引,但由于某种原因,当我调用data.values时,我仍然可以看到编号的索引,并且示例名称不再关联。我有一个模板和合并数据的原因是我有一个独立的文件从基因组分析器导出,并希望使用这个原始输出作为我的程序的主要输入。模板是为了将真假数据添加到相关探针中,这将允许我创建和导入不同QC探针的不同探测列表,这取决于测试分析等。
理想情况下,我希望能够迭代每个样本,然后迭代每个探针及其值。例如,对于所有样本,标记为True的探针之和是多少。
SampleName ProbeName Value
sample 1 probe 1 0
probe 2 0
probe 3 0
probe 4 0
probe 5 0
sample 2 probe 1 1
probe 2 1
probe 3 1
probe 4 1
probe 5 1然后,我希望能够在以后的计算中使用每个样本的单个探测值。这样做最有效的方法是什么?
如果有人能给我一个大致的想法,我应该做什么,如果我在正确的轨道上,那将是非常感谢的。
感谢您的阅读。
发布于 2018-03-11 12:39:48
我相信您需要通过boolean indexing按QC列和聚合sum进行筛选,然后对新列进行map:
df = pd.merge(datain, template, how='left')
print (df)
SampleName ProbeName Value QC
0 sample 1 probe 1 5 True
1 sample 1 probe 2 4 True
2 sample 1 probe 3 3 True
3 sample 1 probe 4 2 False
4 sample 1 probe 5 1 False
5 sample 2 probe 1 1 True
6 sample 2 probe 2 4 True
7 sample 2 probe 3 3 True
8 sample 2 probe 4 2 False
9 sample 2 probe 5 1 False
s = df[df['QC']].groupby('SampleName')['Value'].sum()
df['new'] = df['SampleName'].map(s)
print (df)
SampleName ProbeName Value QC new
0 sample 1 probe 1 5 True 12
1 sample 1 probe 2 4 True 12
2 sample 1 probe 3 3 True 12
3 sample 1 probe 4 2 False 12
4 sample 1 probe 5 1 False 12
5 sample 2 probe 1 1 True 8
6 sample 2 probe 2 4 True 8
7 sample 2 probe 3 3 True 8
8 sample 2 probe 4 2 False 8
9 sample 2 probe 5 1 False 8细节
print (df[df['QC']])
SampleName ProbeName Value QC
0 sample 1 probe 1 5 True
1 sample 1 probe 2 4 True
2 sample 1 probe 3 3 True
5 sample 2 probe 1 1 True
6 sample 2 probe 2 4 True
7 sample 2 probe 3 3 True
print (s)
SampleName
sample 1 12
sample 2 8
Name: Value, dtype: int64https://stackoverflow.com/questions/49219233
复制相似问题