繁体   English   中英

如何加入 pandas 中具有不同行数和不同列的两个数据帧?

[英]How can I join two dataframes in pandas that have different no of rows and different columns?

我正在尝试通过合并 2 个由不同行数组成的数据帧来构建 pandas DataFrame。 我在下面附上了我的代码。 我试图将这两个数据帧连接在一起,但我收到一条错误消息: KeyError: 'Number of Mutations'

#!/usr/bin/env python

import pandas as pd

df1= pd.DataFrame({"Mutations": ["A>T", "A>G", "A>C", "T>A", "T>C", "T>G", "C>A", "C>T", "C>G", "G>A", "G>T", "G>C"], 
                   "Number of Mutations": [213, 659, 281, 204, 627, 208, 351, 1004, 360, 1054, 323, 351]})

df2= pd.DataFrame({"Number of Bases":["A = 42239", "T = 55005", "G = 46060" , "C = 45422"]})

mdf=df1.merge(df2, on= "Number of Mutations" , how="outer")
print(mdf)

我不知道你为什么首先要组合这些 df,因为这些行根本没有连接。 但是,如果您只想将它们彼此对齐,则需要使用pd.concat

out = pd.concat([df1, df2], axis=1)
print(out)
   Mutations  Number of Mutations Number of Bases
0        A>T                  213       A = 42239
1        A>G                  659       T = 55005
2        A>C                  281       G = 46060
3        T>A                  204       C = 45422
4        T>C                  627             NaN
5        T>G                  208             NaN
6        C>A                  351             NaN
7        C>T                 1004             NaN
8        C>G                  360             NaN
9        G>A                 1054             NaN
10       G>T                  323             NaN
11       G>C                  351             NaN

如果有不同的索引并且您只想在开始时使用 df2 直到没有更多数据,那么您需要在连接它们之前使用 reset_index() 。

out = pd.concat([df1.reset_index(drop=True), df2.reset_index(drop=True)], axis=1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM