如何在Pandas中融化两个数据帧

2024-09-28 21:03:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧:

In [14]: rep1
Out[14]: 
   x  y  z
A  1  2  3
B  4  5  6
C  1  1  2

In [15]: rep2
Out[15]: 
   x  y  z
A  7  3  4
B  3  3  3

使用以下代码创建:

^{pr2}$

然后我要做的是对rep1rep2进行网格划分,从而得到如下结果:

gene rep1 rep2 type
A     1    7    x
B     4    3    x
A     2    3    y
B     5    3    y
A     3    4    z
B     6    3    z

跳过C行,因为它不是由rep1rep2共享的。在

我怎么才能做到呢?在


Tags: 数据代码in网格typeoutgenepr2
2条回答
>>> c1 = rep1.values.T.flatten()
>>> c2 = rep2.values.T.flatten()
>>> c3 = np.vstack((rep1.columns.values, rep2.columns.values)).T.flatten()
>>> pd.DataFrame(np.vstack((c1,c2,c3)).T)
   0  1  2
0  1  7  x
1  4  3  x
2  2  3  y
3  5  3  y
4  3  4  z
5  6  3  z

编辑:当我回答这个问题时,这个问题根本没有C行。现在事情更复杂了,但我还是把这个留在这里。在

这样做:

df =pd.concat([rep1.stack(),rep2.stack()],axis=1).reset_index().dropna()
df.columns =['GENE','TYPE','REP1','REP2']
df.sort(columns=['TYPE','GENE'], inplace=True)

串联axis =1上的堆叠数据帧。重置索引可以返回gene和type列。dropna处理基因c产生的空值。添加正确的列名等

退货:

^{pr2}$

相关问题 更多 >