2024-10-03 00:16:33 发布
网友
我有一个dataframe,其中的列如下:
A B 0 - 5923FoxRd 5923 Fox Rd 1 631 Newhaven Ave Modesto 2 Saratoga Street, Suite 200 Saratoga Street, Suite 200
我想用a中的值创建一个与B中的值匹配的列表。该列表应该看起来像[-5923FoxRd,Saratoga Street,Suite 200…]。最简单的方法是什么
要让一点走得更远,请执行以下操作:
\W+
str.replace()
str.lower()
drive
dr
avenue
ave
s1 = df['A'].str.replace('\W+', '').str.lower() s2 = df['B'].str.replace('\W+', '').str.lower() lst = [*df[s1==s2]['A']] lst Out[1]: ['- 5923FoxRd', 'Saratoga Street, Suite 200']
这就是s1和s2的样子:
s1
s2
print(s1,s2) 0 5923foxrd 1 631newhavenave 2 saratogastreetsuite200 Name: A, dtype: object 0 5923foxrd 1 modesto 2 saratogastreetsuite200 Name: B, dtype: object
在此基础上,您可能希望创建一些替换值,以便进一步规范化数据,如:
to_replace = ['drive', 'avenue', 'street'] replaced = ['dr', 'ave', 'str'] to_replace = ['drive', 'avenue', 'street'] replaced = ['dr', 'ave', 'str'] s1 = df['A'].str.replace('\W+', '').str.lower().replace(to_replace, replaced, regex=True) s2 = df['B'].str.replace('\W+', '').str.lower().replace(to_replace, replaced, regex=True) lst = [*df[s1==s2]['A']] lst print(s1,s2) 0 5923foxrd 1 631newhavenave 2 saratogastrsuite200 Name: A, dtype: object 0 5923foxrd 1 modesto 2 saratogastrsuite200 Name: B, dtype: object
要让一点走得更远,请执行以下操作:
\W+
传递给str.replace()
str.lower()
drive
规范化为dr
,avenue
规范化为ave
等这就是
s1
和s2
的样子:在此基础上,您可能希望创建一些替换值,以便进一步规范化数据,如:
相关问题 更多 >
编程相关推荐