左表上的值作为通配符

2024-09-27 21:28:51 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有人知道一种有效的方法,可以将两个数据帧连接到多个列上,并将NA值作为通配符

我的用例示例:

我有一个数据帧df_a,如下所示:

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

以及一个数据帧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,并使用列匹配项分配模式,将空值作为comodin

在这种情况下,预期输出应为:

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更好

提前感谢,

阿尔贝托


Tags: 数据方法dfes模式deitbuy
1条回答
网友
1楼 · 发布于 2024-09-27 21:28:51

最好的方法是使用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             

相关问题 更多 >

    热门问题