【发布时间】:2017-11-30 21:28:26
【问题描述】:
我有两个来自两个不同来源的 pandas 数据框,它们都包含建筑地址,我想合并它们。我遇到的问题是,两组地址的记录方式并不完全相同。特别是街道的方向('N'、'E'、'S'、'W')。
一组中的一些地址有方向,而另一些则没有,所以如果我使用方向作为合并列,一些匹配的地址不会合并在一起(例如,一个中的“123 Main St”和一个中的“123 N Main St”另一个)。有些建筑物除了方向之外有相同的地址(例如'456 N Other Ave'和'456 S Other Ave')所以我不想完全忽略方向,但我想使用街道的方向作为仅在存在重复地址时才使用的辅助合并列,否则将被忽略。有没有办法做到这一点?
我用于此合并的两列是 full_add 和 dir,它们分别具有 '123 Main St' 和 'N' 之类的条目。
这是一个例子:
df1 = pd.DataFrame({
'full_add': ['123 Main St', '456 Other Ave', '456 Other Ave'],
'dir': ['N', 'N', 'S'],
'left_val': [100, 200, 300]
})
df2 = pd.DataFrame({
'full_add': ['123 Main St', '456 Other Ave', '456 Other Ave'],
'dir': [np.nan, 'N', 'S'],
'right_val': [1000, 2000, 3000]
})
merged = pd.DataFrame({
'full_add': ['123 Main St', '456 Other Ave', '456 Other Ave'],
'dir': ['N', 'N', 'S'],
'left_val': [100, 200, 300],
'right_val': [1000, 2000, 3000]
})
【问题讨论】:
标签: python pandas dataframe merge