我想根据我在尝试识别多个数据帧中的交叉值时遇到的问题寻求建议,但在我看来,这有点复杂,我不知道如何使用普通的交集函数来做到这一点。
我有几个数据帧(最多12个),其中有多个列,显示了基因随时间的变化(例如5个时间点)以及其他基因如何与这种变化相关(即,其他基因也以与数据中其他基因相关的方式下降或上升)。该分析一次提取每个基因,使用该基因作为参考,并针对每个单独的基因进行测试,以查看这些基因随时间的变化模式是否与第一个参考基因相关。这对每个单独的基因都是重复的。因此,以一个数据帧为例,结果如下所示。
第一列包含用作参考基因的基因,如果其他基因与该基因随时间的变化相关,则该值可能会多次出现。例如,如果基因b、c和d与基因a相关,则前两列显示如下:
a b
a c
a d
同样的,对于基因b等等,第四个是20,000次(基因数量)!希望这是有意义的?
b a
b c
b d
上面的分析是在多个不同的样本中进行的,所以我将获得多达12个不同样本的数据帧,每个数据帧都有如上所述的详细结果。
目标(并提前道歉,我没有代码,因为我不完全确定从哪里开始!)因为我认为这可能最好通过创建一个函数来实现:对于第1列中的基因'x‘,在每个单独的数据帧中,我希望查看第2列是否有重叠值。
以上面的例子为例,多个数据帧可能如下所示:
df1
a b
a c
a d
df2
a d
a c
a e
df3
a d
a e
a f
因此,比较数据帧,该函数将确定对于基因a,在所有数据帧之间有一个列值…基因d..因为它对于基因a的所有数据帧都是公共的。
类似地,该函数将对每个单独的基因进行重叠分析。基因a,b,c..etc
输出将是列2中的每个单个基因的重叠值,该重叠值是列a中的同一基因在数据帧上出现的值。
我正在粘贴头部(分析)
Feature1 Feature2 delay pBefore pAfter corBefore
1 ENSMUSG00000001525 ENSMUSG00000026211 0 0.1093914984 0.1093914984 0.7161907
2 ENSMUSG00000001525 ENSMUSG00000055653 -1 0.0916478944 0.1047749696 0.7414240
3 ENSMUSG00000001525 ENSMUSG00000003038 0 0.0006810160 0.0006810160 0.9786161
加上特征1中更多的基因,每个特征2中的基因与特征1中的基因相关联
此数据框将是一个样本,而我将为其他样本提供单独的结果
我非常感谢任何关于如何创建代码来实现这一目标的提示。此外,如果能够指定我也愿意看到仅包含的基因的重叠,例如>= 0.8的pBefore,或者delay列等的相同,那将是很好的。
非常感谢你花时间阅读这篇文章!
发布于 2019-01-27 05:53:48
如果我理解正确的话,您可以将所有12个数据帧添加为
df_final = pd.concat([df1,df2.....df12])
找到所有12个数据帧中存在的基因组合
df_n = df_final.groupby(['A','B']).size().reset_index(name = 'count')
因为有12个数据帧
df_n[df_n['count']==12]
会给你所有12个数据帧中的一对基因。
https://stackoverflow.com/questions/54382400
复制相似问题