【发布时间】:2019-10-31 00:18:25
【问题描述】:
我正在使用 where "t1.A = t2.A OR t1.B = t2.A" OR t1.C = t2.A 搜索相当于 SQL 合并的内容。我有两个数据框说 D1,其中 A、B、C、D、E 作为列和 D2,其中 D2 的很少记录可以由 D1 的 A 列提取,很少来自其别名 B、C、D 和 E 列。
我尝试如下,但它给了我错误的输出。
sample = D1.merge(D2,left_on=[ 'A' or'B' or'C'or 'D' or E],
right_on=['A'], how='left')
然后我尝试了
sample = pd.concat([D1.merge(D2,left_on='A', right_on= 'A', how='left'),
D1.merge(D2,left_on='B', right_on='A', how='left'), D1.merge(D2,
left_on='C',right_on='A', how='left'),D1.merge(D2,left_on='D',
right_on='A', how='left'),D1.merge(D2,left_on='E', right_on='A',
how='left')])
这给了我很多重复我试图删除重复但不幸的是,它没有成功。
dupes = (sample['A'] == sample['B']) == (sample['C'] == sample['D']) ==
sample['E']
sample=sample.loc[~dupes]
ValueError: The truth value of a Series is ambiguous. Use a.empty,
a.bool(), a.item(), a.any() or a.all().
我需要输出或“样本”记录与数据框 D1 的记录相同。
【问题讨论】:
-
在这种情况下,查看数据的外观至关重要。您能否添加示例数据,以便我们可以直观地看到您正在尝试做什么。欲了解更多信息,请查看here
-
您可以将这些列设置为索引并进行常规合并吗?
标签: python-3.x pandas merge