我刚开始使用Python,因为我是一个有经验的R用户,我发现熊猫适合下面的情况。我试着把它描述清楚,所以
情况是:
我的问题是:
我已经有了一个比较行名/冒号和标志的函数。因此,假设一旦实现了对每个单元的有效访问,就调用函数(i.ex )。compare_and_count()),将冒号和行名解析为参数,并返回计数或不返回。从逻辑上讲,计数将添加到dataframe单元格中,如果存在以前的计数,则将对其进行加和。
正如这里提供的其他信息一样,也是对dataframe的预览:
chr6:0-2000 chr6:2000-4000 chr6:4000-6000 chr6:6000-8000 ... chr6:171114000-171115067
chr6:0-2000 0 0 0 0 ... 0
chr6:2000-4000 0 0 0 0 ... 0
chr6:4000-6000 0 0 0 0 ... 0
… … … … … …
chr6:171110000-171112000 0 0 0 0 ... 0
chr6:171112000-171114000 0 0 0 0 ... 0
chr6:171114000-171115067 0 0 0 0 ... 0我试图不去回答已经回答的问题,我认为这是一个很大的数据格式,必须仔细考虑行名和冒号的信息。
我感谢每一个能把它的知识添加到答案中的人!
最好的!
-编辑
作为额外的解释,因为这里的注释所建议的是我的典型输入和期望的输出:
输入由一系列由行分隔的分组坐标组成。每一行必须分别对待:
Ids CHR-1 START-1 CHR-2 START-2
id1 chr6 1 chr6 100
id2 chr6 1995 chr6 2200
id3 chr6 2300 chr6 2500
id4 chr6 3300 chr6 3500
id5 chr6 3447 chr6 3658
id6 chr6 5000 chr6 5100
id7 chr6 5050 chr6 5150
id8 chr6 6000 chr6 6100正如您在第一个Dataframe中看到的,有一组坐标作为行名和冒号。因此,目标是映射大数据中文件中的线分组坐标。例如,以下坐标:
id1 chr6 1 chr6 100应该只在单元1,1中计算,因为start-1和start-2在0-2000之间。然而,下一个坐标是:
id2 chr6 1995 chr6 2200应该只在单元1,2中计算,因为start-1在0-2000 之间,而 start-2在2000-4000年之间。
最后的输出将是在dataframe中映射成组坐标的矩阵:
chr6:0-2000 chr6:2000-4000 chr6:4000-6000 chr6:6000-8000 ... chr6:171114000-171115067
chr6:0-2000 1 2 0 0 ... 0
chr6:2000-4000 0 1 0 0 ... 0
chr6:4000-6000 0 0 1 0 ... 0
… … … … … …
chr6:171110000-171112000 0 0 0 0 ... 0
chr6:171112000-171114000 0 0 0 0 ... 0
chr6:171114000-171115067 0 0 0 0 ... 0正如您可以表示的,在这个示例中,如果同一行中有不同的is,则不考虑这一点,因此可以使用if/else语句和稍微不同的Dataframe组合来解决这个问题。我主要担心的是迭代&使用尽可能短的时间进行计数。
这是否澄清了情况?谢谢!
发布于 2014-11-28 16:33:17
我有点不明白为什么您有CHR-1和CHR-2列,它们似乎没有添加任何内容。下面是我的例子DataFrame
df = pandas.DataFrame([[500, 200], [600,1100], [500, 2200]], columns=['a','b'])
>>> df
a b
0 500 200
1 600 1100
2 500 2200您希望按2000的倍数存储元素,因此:
df /= 2000
>>> df
a b
0 0 0
1 0 0
2 0 1现在我们可以看到,cell[0,0]应该有两个计数,cell[0,1]应该有一个计数。我们使用groupby方法完成这一任务,并使用count作为聚合器:
c = df.groupby(['a','b']).size()
>>> c
a b
0 0 2
1 1现在,我们可以通过以下方法获得一个单元格的计数:
>>> c.loc[0,0]
2
>>> c.loc[0,1]
1https://stackoverflow.com/questions/27189014
复制相似问题