Python 在excel列中搜索匹配的文本值,打印行
在这里,我从不同的文档中获取名称和zip值;并存储在变量中:(工作正常) 然后我只想搜索我的excel文件以找到匹配项;如果找到Python 在excel列中搜索匹配的文本值,打印行,python,regex,excel,pandas,python-3.7,Python,Regex,Excel,Pandas,Python 3.7,在这里,我从不同的文档中获取名称和zip值;并存储在变量中:(工作正常) 然后我只想搜索我的excel文件以找到匹配项;如果找到名称文本值,则获取行号: data = pd.read_excel(config.Excel2) row_number = data[data['Member Name'].str.contains(Name)].index.min() print(row_number) 上面打印时输出的行号不
名称
文本值,则获取行号:
data = pd.read_excel(config.Excel2)
row_number = data[data['Member Name'].str.contains(Name)].index.min()
print(row_number)
上面打印时输出的行号不正确,我不明白为什么。i、 e.它不会打印在我的excel文档中找到匹配文本值的行。它打印的行号错误,与名称不匹配
然后,我试过这样的东西;但这根本不输出任何内容:(输出关键错误)
关于如何实现这一点有什么想法吗
我的excel如下所示(大约11000行,如下图所示,8列)
我没有您的excel文件,因此我设置了以下代码:
import pandas as pd
names = ["RHONDA GILBERT", "FRED FLINTSTONE", "FRED FLINTSTONE", "BARNEY RUBLE", "RHONDA GILBERT"]
add1 = ["123 Elm St", "254 Pine Ave", "254 Pine Ave", "654 Spruce Grove", "123 Elm St"]
df = pd.DataFrame(list(zip(names, add1)),
columns =['Member Name', 'Member Address Line 1'])
df
它提供了以下输出:
Member Name Member Address Line 1
0 RHONDA GILBERT 123 Elm St
1 FRED FLINTSTONE 254 Pine Ave
2 FRED FLINTSTONE 254 Pine Ave
3 BARNEY RUBLE 654 Spruce Grove
4 RHONDA GILBERT 123 Elm St
如果我现在搜索“FRED”,那么我会这样写:
Name = "FRED"
matches = df[df['Member Name'].str.contains(Name)]
matches
我得到的结果是:
Member Name Member Address Line 1
1 FRED FLINTSTONE 254 Pine Ave
2 FRED FLINTSTONE 254 Pine Ave
注意,如果我询问匹配的索引,我会得到
matches.index
# outputs
Int64Index([1, 2], dtype='int64')
这些是df的原始指数。然后寻找索引的最小值
matches.index.min()
# outputs
1
这是指数的最小值。我不太确定你的结果与上述有何偏差。如果您愿意澄清,我将更改我的解释。您能显示data.head()
输出吗?你能举一个不正确的行号的例子吗?刚刚测试了这个,你的代码对我有效,你能打印Name=find\u Name.group(0)
的输出吗?所以在两种情况下使用“Member Name”都会输出“keyrerror”。使用其他列名是可行的,但输出的行号不正确(即未找到匹配文本的位置)
Member Name Member Address Line 1
1 FRED FLINTSTONE 254 Pine Ave
2 FRED FLINTSTONE 254 Pine Ave
matches.index
# outputs
Int64Index([1, 2], dtype='int64')
matches.index.min()
# outputs
1