【问题标题】:Search excel columns for matching text value, print row #s在 excel 列中搜索匹配的文本值,打印行#s
【发布时间】:2019-12-06 21:04:24
【问题描述】:

在这里,我从不同的文档中获取名称和 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 不匹配。

那么,我试过这样的;但这根本不输出任何东西:(outputs Key Error)

        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

【问题讨论】:

  • 能否请您显示data.head() 输出?你能举一个错误行号的例子吗?
  • 刚刚对此进行了测试并使用您的代码为我工作,您可以打印Name = find_name.group(0)的输出吗
  • 因此在两种情况下使用“成员名称”都会输出“KeyError”。使用其他列名有效,但输出不正确的行号(即未找到匹配文本的位置)

标签: python regex excel pandas python-3.7


【解决方案1】:

我没有你的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

这是索引中的最小值。我不太确定您的结果与上述结果有何不同。如果你想澄清,我会改变我的解释。

【讨论】:

    猜你喜欢
    • 2020-06-12
    • 1970-01-01
    • 1970-01-01
    • 2018-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-21
    • 1970-01-01
    相关资源
    最近更新 更多