首页 > 解决方案 > 通过python根据列上的匹配合并不同的3个文件

问题描述

我有 3 个不同的文件,例如

p1

     x  y       
1    a  c
2    b  c
3    d  c
4    d  c

p2

    x1   y1  
1    b    n
2    a    n
3    a    n

我有不同的文件(p3),其中有一堆 x id,如 1a、2b 等,我想根据 x 上的 id 指示 y 列是否对应 n 或 c。

我试过了

df3 = pd.merge(p3,p2,on='x1',how='right') or
df3 = pd.merge(p3,p1)  but it did not work.

你可以帮帮我吗?

标签: pythonpandas

解决方案


有很多方法可以做到这一点,并且取决于数据的大小。我会做以下事情。

  1. 连接 p1 和 p2

  2. 创建一个将 ID 映射到值的字典

  3. 适用于 p3

    p2.rename(列={“x1”:“x”,“y1”:“y”},就地=真)

    p = pd.concat([p1, p2], 轴=0)

    dictValues = dict(zip(p["x"].tolist(), p["y"].tolist()))

    p3["y"] = p3["x"].map(dictValues)


推荐阅读