numpy 在Pandas中对两个不同数据集的值进行配对时,保留要匹配的数据集的原始行数

clj7thdc  于 2023-08-05  发布在  其他
关注(0)|答案(1)|浏览(74)

数据

DF1

ID                  stat
AA1                 exzone
BB2                 exzone5
CC4                 limit5

字符串
DF2

name                state
AA1                 NY
AA1                 NY
AA1                 NY
AA1                 NY
BB2                 GA
BB2                 GA
BB2                 GA
CC4                 CA
CC4                 CA

所需

name                stat          state
AA1                 exzone        NY
BB2                 exzone5       GA
CC4                 limit5        CA

在做

out = pd.merge(df1,df2, left_on=['ID'], right_on= ['name'], how="left")


然而,上面的脚本给出分解输出,并且不保留原始的左 Dataframe 行计数。任何建议都很感激。

fsi0uk1n

fsi0uk1n1#

左合并并不意味着结构将与原始左DataFrame的结构相同。这意味着所有的左键都将被保留,即使在右DataFrame中没有。在本例中,右侧的重复键强制merge计算行的所有组合。
您需要首先删除重复项:

out = pd.merge(df1, df2.drop_duplicates(), left_on=['ID'], right_on= ['name'], how="left")

字符串
如果出于某种原因,每个名称有几个不同的状态,则应该找到另一种聚合方法(选择第一个,最后一个,将唯一状态组合为单个字符串等),或者接受行重复。

相关问题