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