python - 在 excel 列中搜索匹配的文本值,打印行#s
问题描述
在这里,我从不同的文档中获取名称和 zip 值;并存储在变量中:(工作正常)
Name = find_name.group(0)
然后我只想搜索我的excel文件以找到匹配项;在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
这是指数中的最小值。我不太确定您的结果与上述结果有何不同。如果你想澄清,我会改变我的解释。
推荐阅读
- python - django.core.exceptions.FieldError:为医生指定的未知字段(电话号码、城市、电子邮件、KYCDocument、图像、专业)
- google-chrome-devtools - Chrome DEV 工具:按功能导航
- javascript - React Webpack 设置块优化
- python - 我如何通过将列表划分为python中的更多列表来划分列表?
- r - 如何重命名从行名中提取的列的行?
- excel - 代码返回 0 结果而不是第一个搜索链接
- javascript - 从哈希表中返回所有节点
- javascript - 用 useState 反应太多的撕裂
- scala - 如何在Scala中逐步生成时间范围序列?
- flutter - 找不到 appcompat-1.2.0.aar (androidx.appcompat:appcompat:1.2.0)