首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合并两个数据文件,并试图有效地访问和使用数据

合并两个数据文件,并试图有效地访问和使用数据
EN

Stack Overflow用户
提问于 2018-03-11 10:59:19
回答 1查看 35关注 0票数 1

我已经获得了一个导入模板,它是一个包含指定为True或False的探测名称的表(如果以后将用于QC目的),例如:

代码语言:javascript
复制
ProbeName QC
probe 1 True
probe 2 True
probe 3 True
probe 4 False
probe 5 False

其次,我有一个导入的示例列表,其中包括作为合并点的探针名称和探针的值。

第二个导入如下所示:

代码语言:javascript
复制
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

合并在一起,目前如下所示:

代码语言:javascript
复制
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

等等。

索引默认为行数。我使用以下代码完成了此操作:

代码语言:javascript
复制
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的探针之和是多少。

代码语言:javascript
复制
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

然后,我希望能够在以后的计算中使用每个样本的单个探测值。这样做最有效的方法是什么?

如果有人能给我一个大致的想法,我应该做什么,如果我在正确的轨道上,那将是非常感谢的。

感谢您的阅读。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-11 12:39:48

我相信您需要通过boolean indexingQC列和聚合sum进行筛选,然后对新列进行map

代码语言:javascript
复制
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

细节

代码语言:javascript
复制
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: int64
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49219233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档