从pandas数据帧中提取值

Tom*_*nks 1 python extract overlap pandas

我正在使用Pandas并希望从多个数据帧中提取值.例如,有三个数据帧,如下所示.

df1 = pd.DataFrame({'key': ['K0', 'K1'],
                     'A': ['A0', 'A1'],
                     'B': ['B0', 'B1']})

df2 = pd.DataFrame({'key': ['K1', 'K22'],
                      'C': ['C1', 'C3'],
                      'D': ['D1', 'D3']})

df3 = pd.DataFrame({'key': ['K1', 'K30'],
                      'E': ['E1', 'E3'],
                      'F': ['F1', 'F3']})
Run Code Online (Sandbox Code Playgroud)

如果在数据帧之间共享密钥,我想提取值.所以我在下面做了

pd.merge(df1,df2, on='key')
Run Code Online (Sandbox Code Playgroud)

这显示如下,这很好.

    A   B key   C   D
0  A1  B1  K1  C1  D1
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试超过2个数据帧,它将无法正常工作.例如,以下不起作用.

pd.merge(df1,df2,df3, on='key')
Run Code Online (Sandbox Code Playgroud)

我认为pd.merge不适合这个.有谁知道这样做的好方法?

谢谢!

Sco*_*ton 6

pd.merge使用两个数据帧(左和右)

您可以使用pd.concat连接数据帧列表.

pd.concat([df1,df2,df3],axis=1)
Run Code Online (Sandbox Code Playgroud)

对...

pd.concat([df1.set_index('key'),df2.set_index('key'),df3.set_index('key')],axis=1,join='inner')
Run Code Online (Sandbox Code Playgroud)