python - Pandas :意外的加入行为导致 NaN

标签 python pandas

<分区>

我有两个数据框,我想加入 Pandas (版本 0.18.1)。

test1 = pd.DataFrame({'id': range(1,6), 'place': ['Kent','Lenawee','Washtenaw','Berrien','Ottawa']})

  id_1      place
0   1       Kent
1   2    Lenawee
2   3   Montreal
3   4    Berrien
4   5     Ottawa


test2 = pd.DataFrame({'id_2': range(6,11), 'id_parent': range(1,6)})

   id_2  id_parent
0     6          1
1     7          2
2     8          3
3     9          4
4    10          5

然而,当我连接两个表时,最后一行没有正确连接,因为它是左连接,结果为 NaN。

df = test2.join(test1,on='id_parent',how='left')

   id_2  id_parent  id_1      place
0     6          1     2    Lenawee
1     7          2     3   Montreal
2     8          3     4    Berrien
3     9          4     5     Ottawa
4    10          5   NaN        NaN

这对我来说没有意义——id_parent 和 id_1 是连接两个表的键,它们具有相同的值。两列具有相同的 dtype (int64)。这是怎么回事?

最佳答案

join主要加入索引,使用 merge为此:

In [18]:
test2.merge(test1,left_on='id_parent', right_on='id')

Out[18]:
   id_2  id_parent  id      place
0     6          1   1       Kent
1     7          2   2    Lenawee
2     8          3   3  Washtenaw
3     9          4   4    Berrien
4    10          5   5     Ottawa

你得到 NaN 因为 rhs 将使用 rhs 索引并且没有 05 的条目所以你得到 NaN

关于python - Pandas :意外的加入行为导致 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37439542/

相关文章:

python - 如何在 Pandas 数据框中按名称选择行列表

python - 如何使用pandas有效获取多个二值特征?

python - "Can' t 从安装目录获取安装脚本的一致路径”

python - 图形工具:如何访问属性?

Python Pandas 从另一个观察结果中输入字符串值

Python - 将坐标映射到由 numpy.meshgrid 定义的单元格

python - 按值访问另一列,Pandas

python - python 中 2 y 轴的图例问题

python - 将 Spark Dataframe (pyspark.pandas.Dataframe) 从 Azure DataBricks 导出到 Excel 文件

python - 如何在接受用户输入的同时读取 pandas read_csv 中带有转义字符的文件路径?