【发布时间】:2019-08-12 16:32:54
【问题描述】:
希望执行正则表达式函数以将数据框的列与另一列的第一个单词匹配。数据框是从不同来源收集的,因此药物名称相似但不完全匹配。如果您忽略大小写并匹配第一个单词,它们确实匹配。
我有两个数据框:一个包含药物名称,另一个包含药物名称列表及其各自的价格。出于示例目的,水果被添加到药物名称中。
Dataframe A
drug
0 drug1 apple
1 drug2 orange
2 drug3 lemon
3 drug4 peach
Dataframe B
drugB price Regex
0 DRUG2 2 ^([\w\-]+)
1 DRUG4 4 ^([\w\-]+)
2 DRUG3 3 ^([\w\-]+)
3 DRUG1 1 ^([\w\-]+)
我希望像这样使用 Regex 列将数据框 A 附加到 B。希望使用药物列的名字并将其与相应的列相匹配。
drug drugB price Regex
0 drug1 apple DRUG1 1 ^([\w\-]+)
1 drug2 orange DRUG2 2 ^([\w\-]+)
2 drug3 lemon DRUG3 3 ^([\w\-]+)
3 drug4 peach DRUG4 4 ^([\w\-]+)
基于以下 stackoverflow 问题,我受到启发以这种方式尝试:How to merge pandas table by regex。
提前感谢您!我在这个问题上遇到了死胡同,想不出办法让它工作。
【问题讨论】:
-
根据您的描述,您可能需要
.str.split().str[0]用于DataFrameA,.str.lower()用于DataFrame B,然后您可以完全匹配。