如何合并两个熊猫数据框之间的数据,其中一个数据框具有重复的索引值

How do I merge data between two panda's data frames where one data frame has duplicate index values

我有两个数据帧加载到 Pandas。每个数据框包含 属性 信息,由特定地块的 'pin' 索引。

第一个数据框 (df1) 表示历史销售数据。因为房产可以多次出售,索引值 ('pin') 会重复(即每次出售 属性 都会有一行以地块的 'pin' 作为索引号。如果属性在数据集中被卖出1次,index/'pin'是唯一的,如果被卖出5次,则index/'pin'在数据集中会出现5次).

第二个数据框 (df2) 是 属性 记录。同样,它们由唯一的包裹 pin 索引,但由于此数据框是每个 属性 的记录,因此每个索引值的 value_counts() 为 1(即索引值不重复)。

我想将数据添加到 df1 或创建一个新的数据框,以保持 df1 中的所有数据完好无损,但根据匹配的索引值添加 df2 中的值。

例如:df1 有列 ['SALE_YEAR','SALE_VALUE'] - 其中可以有多个具有相同索引值的行。 df2 有列 ['Address'、'SQFT'],其中索引值在数据框中都是唯一的。我想通过匹配索引值将 'Address' & 'SQFT' 数据点添加到 df1。

Merge() 和 Concat() 似乎不起作用。我相信这是因为语法很难将 df2 值处理/匹配到多个 df1 行。

视觉示例:

感谢您的帮助。

试试这个:

import pandas as pd
merged_df = pd.merge(left=df1, right=df2, on='PIN', how='left')

如果仍然无效,可能是 PIN 列的数据类型不匹配。

df1['PIN'] = df1['PIN'].astype(int)
df2['PIN'] = df2['PIN'].astype(int)

merged_df = pd.merge(left=df1, right=df2, on='PIN', how='left')