多行为空时如何执行合并

时间:2018-12-09 01:22:58

标签: python pandas dataframe

假设我们有一个看起来像这样的dataframe1

tag     random
English abc
French  xyz
Chinese poi

和dataframe2看起来像这样

language  translation data
English   hello       5
          hi          3
          hey         1
Chinese   nihao       4
          xyz         0
Dutch     oy          9
French    bonjour     7

我想实现一个看起来像这样的数据框:

output

tag      translation data
English  hello       5
Chinese  nihao       4
French   bonjour     7

我知道我需要做类似的事情

df = pd.merge(df1, df2, left_on='tag', right_on='language')

但是当我这样做时,我会遇到很多错误。

1 个答案:

答案 0 :(得分:1)

df2是一个序列,而不是数据帧,按多重索引的0级分组,选择第一行并重置索引,以将序列转换为数据帧。现在使用合并。

df1[['tag']].merge(df2.groupby(level=0).head(1).reset_index(),\
left_on = 'tag', right_on = 'language', how = 'left').drop('language', axis = 1)

    tag     translation data
0   English hello       5
1   French  bonjour     7
2   Chinese nihao       4