【发布时间】:2023-02-20 17:37:42
【问题描述】:
我想在 a 列上左合并 df_1 和 df_2
我可以通过以下方式轻松存档:
df_3 = df_1.merge(df_2, on="a", how="left")
但是,我知道当df_1.b == 0时,我永远不会在df_2中找到a
因此,为了优化我的代码,我只想在 df_1.b != 0 时将 df_1 与 df_2 合并
我怎样才能更有效地了解这些信息来获得 df_3?
输入
d = {'a': list('ABCDEF'),
'b': list('111000')}
df_1 = pd.DataFrame(data=d)
# a b
# 0 A 1
# 1 B 1
# 2 C 1
# 3 D 0
# 4 E 0
# 5 F 0
d = {'a': list('ABC'),
'c': list('xyz')}
df_2 = pd.DataFrame(data=d)
# a c
# 0 A x
# 1 B y
# 2 C z
预期产出
df_3
# a b c
# 0 A 1 x
# 1 B 1 y
# 2 C 1 z
# 3 D 0 NaN
# 4 E 0 NaN
# 5 F 0 NaN
【问题讨论】:
-
merge已经在内部进行了这项检查,你可能不会通过预过滤获得太多性能
标签: pandas optimization merge