Python 如何连接两个具有不同行项的数据帧

Python 如何连接两个具有不同行项的数据帧,python,pandas,Python,Pandas,我有两个数据帧 df1 SR NAME ROLL 1 kk 123 2 mm 456 3 pp 789 4 hh 891 df2 ID Marks 143 45 123 65 我想合并这样的输出 df3 SR NAME ROLL Id marks 1 kk 123 143 45 2 mm 456 123 65 输出行的组成应

我有两个数据帧

df1
SR   NAME   ROLL
1    kk      123
2    mm      456
3    pp      789
4    hh      891

df2

ID    Marks
143     45
123     65
我想合并这样的输出

df3
SR   NAME   ROLL   Id     marks
1    kk      123   143    45
2    mm      456   123    65
输出行的组成应与第二个数据帧相同 假设在上面的
df1
中有4行,而
df2
中有2行 输出
df3
应仅为2(注意:两者中没有任何公共列)

此:

df3 = pd.merge(df1,df2, left_on=df1.index, right_on=df2.index).drop('key_0',axis=1)
出局:

   SR NAME  ROLL   ID  Marks
0   1   kk   123  143     45
1   2   mm   456  123     65
输出将是:

SR   NAME   ROLL   Id     marks
1    kk      123   143    45
2    mm      456   123    65
您可以使用来连接两个数据帧,并删除包含任何
NA

dat1 = pd.DataFrame({'NAME': ['kk','mm','pp','hh'],'ROLE':[123,456,789,891]})
dat2 = pd.DataFrame({'ID': [123,143],'MARKS':[45,65]})
df3 = pd.concat([dat1, dat2], axis=1).dropna(how='any')
df3

    NAME    ROLE    ID      MARKS
0   kk      123     123.0   45.0
1   mm      456     143.0   65.0

请注意,您的问题没有真正的意义,因为您正在合并两个不匹配且大小不同的数据源,因此没有理由认为
df2
中的第1行与
df1
中的第1行相关,除非你有外部信息,它必须引用相同的数据。我可以问一下中间的三行是做什么的吗?为什么不干脆
pd.concat([df1,df2],axis=1)
呢?@Aryerez很抱歉,我用df1作为json,所以我用中间行将json转换为数据帧。我已经更新了
dat1 = pd.DataFrame({'NAME': ['kk','mm','pp','hh'],'ROLE':[123,456,789,891]})
dat2 = pd.DataFrame({'ID': [123,143],'MARKS':[45,65]})
df3 = pd.concat([dat1, dat2], axis=1).dropna(how='any')
df3

    NAME    ROLE    ID      MARKS
0   kk      123     123.0   45.0
1   mm      456     143.0   65.0