在这里,我从不同的文档中获取名称和 zip 值;并将其存储在变量中:(工作正常)
Name = find_name.group(0)
然后我只想搜索我的 Excel 文件以找到匹配项;在Name 找到文本值的地方获取行号:
Name
data = pd.read_excel(config.Excel2) row_number = data[data['Member Name'].str.contains(Name)].index.min() print(row_number)
上面的代码在打印时输出了错误的行号,我不明白为什么。也就是说,它没有打印在我的 excel 文档中找到匹配文本值的行。它打印了一个错误的行号,与 不匹配Name。
然后,我尝试了类似的方法;但这根本没有输出任何东西:(输出键错误)
idx = data[data['Member Name'].str.contains(Name)].index row_number = idx[0] if len(idx)>0 else None print(row_number)
对于如何实现这一目标您有什么想法吗?
我的 Excel 如下所示(大约有 11000 行,如下所示,以及 8 列)。
A 1 | Member Name | Member Address Line 1 | Member Address Line 2 RHONDA GILBERT ADDRESS PT 1 ADDRESS PT 2 W/ ZIP
我没有您的 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
这是指数的最小值。我不太清楚您的结果与上述结果有何不同。如果您愿意澄清,我会修改我的解释。