根据行数连接两个数据框

时间:2018-07-13 15:00:39

标签: python pandas

我有两个数据框:

a b c     d e f
2 4 6     6 7 1
4 7 9     9 5 8
          7 9 6
          5 8 2

现在我要创建一个新的数据框,如下所示:

a b c d e f 
2 4 6 6 7 1 
4 7 9 9 5 8 

也就是说,我只想要第二个数据帧的行,直到行数与第一个数据帧匹配为止。

5 个答案:

答案 0 :(得分:2)

concatjoin = 'inner'

pd.concat([x,y],join = 'inner', axis=1)
Out[184]: 
   a  b  c  d  e  f
0  2  4  6  6  7  1
1  4  7  9  9  5  8

答案 1 :(得分:1)

import pandas as pd
df1=pd.DataFrame({'a': [2, 4], 'b': [4, 7], 'c': [6, 9]})
df2=pd.DataFrame({'d': [6, 9, 7, 5], 'e': [ 7, 5, 9, 8], 'f': [1,8,6, 2]})
result = pd.concat([df1,df2],axis=1, join_axes=[df1.index])
print(result)

请参阅熊猫文档。真的很好。在下面添加了链接。

https://pandas.pydata.org/pandas-docs/stable/merging.html

答案 2 :(得分:0)

>>> import pandas as pd
>>> x = pd.DataFrame({'a': [2, 4], 'b': [4, 7], 'c': [6, 9]})
>>> y = pd.DataFrame({'d': [6, 9, 7, 5], 'e': [ 7, 5, 9, 8], 'f': [1,8,6, 2]})
>>> x
   a  b  c
0  2  4  6
1  4  7  9
>>> y
   d  e  f
0  6  7  1
1  9  5  8
2  7  9  6
3  5  8  2

>>> pd.concat([ x, y], axis=1).dropna()
     a    b    c  d  e  f
0  2.0  4.0  6.0  6  7  1
1  4.0  7.0  9.0  9  5  8

答案 3 :(得分:0)

使用pandas.concat切片,我们可以执行以下操作:

a = pd.DataFrame(np.random.randint(10, size=(2,3)), columns=["a", "b", "c"])
b = pd.DataFrame(np.random.randint(10, size=(4,3)), columns=["d", "e", "f"])

所以两个DataFrame看起来像:

a

b

然后运行:

result = pd.concat([a, b[:len(a)]], axis=1)

结果是:

result

答案 4 :(得分:0)

您可以使用join来连接数据框

df1 = pd.DataFrame({'a': [2, 4], 'b': [4, 7], 'c': [6, 9]})
df2= pd.DataFrame({'d': [6, 9, 7, 5], 'e': [ 7, 5, 9, 8], 'f': [1,8,6, 2]})
df1.join(df2)

   a  b  c  d  e  f
0  2  4  6  6  7  1
1  4  7  9  9  5  8