我正在尝试合并两只熊猫数据帧但我得到一个空的数据框. 你知道吗
我正在关注这个链接中发布的解决方案Python Dataframes not merging on index
但它不起作用
这是我的两个数据帧你知道吗
>>>norm_df.head()
eQTL-103 eQTL-105 eQTL-106 eQTL-111 eQTL-112 \
transcript_id
ENST00000456328.2 -0.418029 -0.418029 -0.418029 -0.418029 0.733977
ENST00000488147.1 0.330873 -1.786156 0.562062 0.023212 0.380326
ENST00000466430.5 1.128144 -1.914506 -0.589456 -0.430727 -0.796183
ENST00000442987.3 1.446104 -0.508488 0.895780 0.306454 0.828465
ENST00000494149.2 0.674490 -1.085325 -0.828465 0.116309 -0.186756
eQTL-115 eQTL-126 eQTL-127 eQTL-131 eQTL-133 \
transcript_id
ENST00000456328.2 1.786156 -0.418029 1.382994 -0.418029 0.861634
ENST00000488147.1 1.005170 -1.044409 -1.515564 1.324958 0.000000
ENST00000466430.5 0.282216 -1.593219 0.828465 0.589456 0.430727
ENST00000442987.3 -0.931003 0.258143 0.535083 1.786156 -0.210428
ENST00000494149.2 -0.562062 0.306454 -0.861634 0.282216 0.430727
eQTL-80 eQTL-85 eQTL-87 eQTL-94 eQTL-96 eQTL-97
transcript_id
ENST00000456328.2 -0.418029 -0.418029 1.005170 -0.418029 -0.418029 -0.418029
ENST00000488147.1 -0.967422 -0.482248 -0.764710 0.895780 0.116309 -0.931003
ENST00000466430.5 0.508488 0.023212 -0.931003 -0.562062 0.861634 -1.382994
ENST00000442987.3 -1.914506 0.380326 -0.482248 -0.116309 0.674490 -1.005170
ENST00000494149.2 -1.515564 -0.430727 -0.023212 0.617300 0.186756 -0.046436
[5 rows x 107 columns]
>>> bed_template_df.head()
chr start end transcript_id
transcript_id
ENST00000456328.2 chr1 11868 11869 ENST00000456328.2
ENST00000450305.2 chr1 12009 12010 ENST00000450305.2
ENST00000488147.1 chr1 29569 29570 ENST00000488147.1
ENST00000619216.1 chr1 17435 17436 ENST00000619216.1
ENST00000473358.1 chr1 29553 29554 ENST00000473358.1
我试过pd.merge
bed_df = pd.merge(bed_template_df, norm_df, left_index=True, right_index=True)
但结果却是一片空白数据框你知道吗
我尝试为两个索引设置相同的类型
norm_df.index = norm_df.index.astype(str)
bed_template_df.index = bed_template_df.index(str)
但是它不起作用,当我在merge命令中指定how
时,我得到了这个结果
>>> bed_df = pd.merge(bed_template_df, norm_df, left_index=True, right_index=True, how='right')
>>> bed_df.head()
chr start end transcript_id eQTL-103 eQTL-105
transcript_id
ENST00000456328.2 NaN NaN NaN NaN -0.418029 -0.418029
ENST00000488147.1 NaN NaN NaN NaN 0.330873 -1.786156
ENST00000466430.5 NaN NaN NaN NaN 1.128144 -1.914506
ENST00000442987.3 NaN NaN NaN NaN 1.446104 -0.508488
ENST00000494149.2 NaN NaN NaN NaN 0.674490 -1.085325
看起来python没有发现这两个索引相等,但是我可以看到ENST00000456328.2
中的bed_template_df
存在于norm_df
好吧,我试着把答案拼起来。你知道吗
1.查找两个数据帧中的共同标记:
2.合并公共\u id上的数据帧:
如果我没听错的话,这应该管用。它提供了一个最终的数据帧,其中只包含norm_df和bed_template_df的共同标记,以及它们中的所有列。你知道吗
相关问题 更多 >
编程相关推荐