Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫';s左合并:结果表有更多行,防止重复_Python_Pandas_Merge - Fatal编程技术网

Python 熊猫';s左合并:结果表有更多行,防止重复

Python 熊猫';s左合并:结果表有更多行,防止重复,python,pandas,merge,Python,Pandas,Merge,我有两个数据帧。df1有39780行,df2有8900454行 我要合并的df1列: ['postalcode','housenumber','suffix'] “后缀”列包含一些NAN df2列: ['postalcode_right','housenumber_right', 'suffix_right', 'index_right'] (名为'index_right'的列不是该数据帧的索引。) 因为df1.suffix包含NAN,所以右侧的一些行与左侧的多行匹配 如何防止出现这种情况或清

我有两个数据帧。df1有39780行,df2有8900454行

我要合并的df1列:
['postalcode','housenumber','suffix']
“后缀”列包含一些NAN

df2列:

['postalcode_right','housenumber_right', 'suffix_right', 'index_right']
(名为'index_right'的列不是该数据帧的索引。)

因为df1.suffix包含NAN,所以右侧的一些行与左侧的多行匹配


如何防止出现这种情况或清除多次匹配的行的“index\u right”值?

您不应该按空值分组。首先,从分析的角度来看,这没有多大意义

您可以将
NA
值转换为填充字符串,例如
'NULL'

left_cols = ['postalcode', 'housenumber', 'suffix']
right_cols = ['postalcode_right', 'housenumber_right', 'suffix_right']]

df1[left_cols] = df1[left_cols].fillna('NULL')
df2[right_cols] = df2[right_cols].fillna('NULL')
然后在合并之前,将重复项放到您的
右侧
数据帧中:

res = pd.merge(df1, df2.drop_duplicates(subset=right_cols), 
               how='left', left_on=left_cols, right_on=right_cols)
这将确保
res
的行数与
df1
相同

res = pd.merge(df1, df2.drop_duplicates(subset=right_cols), 
               how='left', left_on=left_cols, right_on=right_cols)