我正在尝试将两个pandas数据帧合并到索引上,但我收到错误...
alleles chrom pos strand assembly# center protLSID assayLSID
rs#
TP121 C/A 0 121 + NaN NaN NaN NaN
TP135 G/A 0 135 + NaN NaN NaN NaN
TP283 A/G 0 283 + NaN NaN NaN NaN
TP302 C/T 0 302 + NaN NaN NaN NaN
TP334 T/G 0 334 + NaN NaN NaN NaN
1KS 2861 2862 2A 2KS 3KS 4KS 5B 5C A1 ... WWA17replicate WWA18 WWA21
rs# ...
TP121 N N N N N N N N N N ... N N N
TP135 N N G N N N N N N N ... N N N
TP283 A N N N A A N R N A ... N N N
TP302 C C N Y C N C Y Y T ... Y N N
TP334 G N N N N N N N N N ... N N N
当我尝试合并时,我收到此错误 - "['TP121' 'TP135' 'TP283' ..., 'TP251072' 'TP251178' 'TP251355'] not in index"
当它们明显在两个索引中时。我在哪里做错了?
pd.merge(df1, df2, on=df.index, how = "outer")
答案 0 :(得分:1)
你可以尝试:
pd.concat([df1, df2], axis=1)
答案 1 :(得分:0)
对于您的任务pd.concat
比合并更好。但是使用merge
,您可以在列reset_index
上合并两个数据框rs#
:
pd.merge(df1.reset_index(), df2.reset_index(), on='rs#')
如果您需要结果数据框来获得原始索引,那么可以使用set_index
:
pd.merge(df1.reset_index(), df2.reset_index(), on='rs#').set_index('rs#')
In [50]: df1
Out[50]:
alleles chrom pos strand assembly# center protLSID assayLSID
rs#
TP121 C/A 0 121 + NaN NaN NaN NaN
TP135 G/A 0 135 + NaN NaN NaN NaN
TP283 A/G 0 283 + NaN NaN NaN NaN
TP302 C/T 0 302 + NaN NaN NaN NaN
TP334 T/G 0 334 + NaN NaN NaN NaN
In [51]: df2
Out[51]:
1KS 2861 2862 2A 2KS 3KS 4KS 5B 5C A1 WWA17replicate WWA18 WWA21
rs#
TP121 N N N N N N N N N N N N N
TP135 N N G N N N N N N N N N N
TP283 A N N N A A N R N A N N N
TP302 C C N Y C N C Y Y T Y N N
TP334 G N N N N N N N N N N N N
In [52]: pd.merge(df1.reset_index(), df2.reset_index(), on='rs#').set_index('rs#')
Out[52]:
alleles chrom pos strand assembly# center protLSID assayLSID 1KS \
rs#
TP121 C/A 0 121 + NaN NaN NaN NaN N
TP135 G/A 0 135 + NaN NaN NaN NaN N
TP283 A/G 0 283 + NaN NaN NaN NaN A
TP302 C/T 0 302 + NaN NaN NaN NaN C
TP334 T/G 0 334 + NaN NaN NaN NaN G
2861 ... 2A 2KS 3KS 4KS 5B 5C A1 WWA17replicate WWA18 WWA21
rs# ...
TP121 N ... N N N N N N N N N N
TP135 N ... N N N N N N N N N N
TP283 N ... N A A N R N A N N N
TP302 C ... Y C N C Y Y T Y N N
TP334 N ... N N N N N N N N N N
[5 rows x 21 columns]