[英]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_a
和df_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.