我正在尝试比较来自两个不同的dataframes
的两个列以获取相似的值。这些值是字符串,因此它们不仅相同,而且非常相似。如何获得这些相似的值?
我使用的数据帧如下:
Dataframe 1, column "Company", row = "Company_name"
Dataframe 2, column "Company", row = "Company_name_INC"
我想要得到什么:
Dataframe 3, column "Company_source_1" row = "Company_name", column "Company_source_2", row = "Company_name_INC"
我需要找到几乎相同的名称,以便找到出现在两个数据框中的公司。
答案 0 :(得分:0)
您可以使用正则表达式:
正则表达式(https://docs.python.org/3/howto/regex.html)可用于完全按照您的要求进行操作。例如,如果您要寻找与“ Regex”相关的公司,例如:
Regex
Regex_inc
NotRegex
您可以执行以下操作:
[请注意,我已经将DataFrame列Name
转换为Series并使用了.str.contains()
方法,该方法可用于索引原始DataFrame(https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.str.contains.html)中的适当行]
import pandas as pd
data = [['Regex', 'company_1'],
['Regex_inc', 'company_2'],
['NotRegex', 'company_3']]
df = pd.DataFrame(data).rename(columns={0:'Name', 1:'Company'})
df_sorted = df[pd.Series(df['Name']).str.contains(r'^Regex')]
print df
print df_sorted
返回
Name Company
0 Regex company_1
1 Regex_inc company_2
2 NotRegex company_3
df
,和:
Name Company
0 Regex company_1
1 Regex_inc company_2
df_sorted
pd.Series.str.contains()
方法的参数为'^Regex'
,该参数指出要使字符串返回True
值,字符串必须以'Regex'
开头。
我将此正则表达式备忘单(https://www.rexegg.com/regex-quickstart.html)用于特殊字符。我不是Regex的专家,但是可以在线找到大量材料,以及此答案中包含的链接。此外,这里(https://regex101.com/)是一个正则表达式测试器,可用于测试您的模式。