了解pandas加入的工作原理

时间:2017-01-04 16:50:34

标签: python pandas join dataframe

有人可以向我解释一下这个结果吗?特别是,我不知道结果中NaN的来源。此外,我不知道join将如何决定哪一行与此案例中的哪一行匹配。

left_df = pd.DataFrame.from_dict({'unique_l':[0, 1, 2, 3, 4], 'join':['a', 'a', 'b','b', 'c'] })
right_df = pd.DataFrame.from_dict({'unique_r':[10, 11, 12, 13, 14], 'join':['a', 'b', 'b','c', 'c'] })

join  unique_l
0    a         0
1    a         1
2    b         2
3    b         3
4    c         4 

  join  unique_r
0    a        10
1    b        11
2    b        12
3    c        13
4    c        14


print left_df.join(right_df, on='join', rsuffix='_r')

join  unique_l join_r  unique_r
0    a         0    NaN       NaN
1    a         1    NaN       NaN
2    b         2    NaN       NaN
3    b         3    NaN       NaN
4    c         4    NaN       NaN

1 个答案:

答案 0 :(得分:3)

join方法使用索引。你想要的是merge

In [6]: left_df.merge(right_df, on="join", suffixes=("_l", "_r"))
Out[6]:
  join  unique_l  unique_r
0    a         0        10
1    a         1        10
2    b         2        11
3    b         2        12
4    b         3        11
5    b         3        12
6    c         4        13
7    c         4        14

Here是一个相关的(但是,IMO,不是一个重复的)问题,可以更详细地解释joinmerge之间的区别。