繁体   English   中英

Pandas 左连接是右表上的 NA 值作为通配符

[英]Pandas left join were NA values on right table are taken as a wildcard

有谁知道在将 NA 值作为通配符的多列上加入 2 个数据帧的有效方法?

我的用例示例:

我有一个 dataframe df_a像这样:

stop1   stop2   stop3   stop4   stop5   stop6   stop7
ES       IT      GB      DE      AT      US      CA
ES       IT      DE      CH         

还有一个 dataframe df_p具有这样的动作模式(停止序列和可能包含或不包含 NA 值的动作):

stop1   act1    stop2   act2    stop3   act3    stop4     act4
ES      sell     IT                             
ES      sell     IT     sell                      DE      buy
DE      buy      CH                         

我想离开加入df_adf_p并使用列匹配分配模式,将 null 值作为 comodin

在这种情况下,预期的 output 应该是:

stop1   act1   stop2    act2   stop3    act3   stop4    act4    stop5   act5    stop6   act6   stop7
ES      sell    IT      sell    GB               DE      buy     AT              US             CA
ES      sell    IT              DE      buy      CH         

第一行匹配第 1 行和第 2 行中的模式,但第 2 行匹配更多行,因此我们分配该行。 第二行匹配路由模式 1 的开头和路由模式 3 的结尾,因此我们将两者都分配。

我正在处理大量数据,因此我需要一种有效的方法来执行此操作。 另外,您认为逐行迭代或使用 pd.merge 更好吗?

提前致谢,

阿尔贝托

最好的方法是使用merge 如果您不指定公共列,它将查找它们:

df = df_a.merge(df_p, how='left')
df.fillna('', inplace=True)
print(df)

  stop1 stop2 stop3 stop4 stop5 stop6 stop7 act1 act2 act3 act4
0    ES    IT    GB    DE    AT    US    CA
1    ES    IT    DE    CH             

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM