首页 > 解决方案 > 如何遍历列表以查看列表中的任何值是否与另一个单元格中的值的一部分匹配?

问题描述

我有一份来自美国图书馆的美国州列表。然后,我试图遍历 excel 文件中的一列,以查看该列中的任何单元格是否包含任何美国州。如果是这样,那么我将删除这些行。

excel_file = pd.read_excel('file.xlsx', sheet_name = 'sheet')

states = us.states.STATES

for i in range(len(excel_file['Column Label'])):
    if any(states) in excel_file['Column Label'][i]:
        print(i)

现在我在循环中有一个打印语句,只是为了查看弹出哪些索引,但循环本身不起作用。我收到此错误。

TypeError: 'in' 需要字符串作为左操作数,而不是 bool

标签: pythonexcel

解决方案


这不是做什么any()any()循环遍历一个可迭代对象并返回True如果该可迭代对象中的任何事物导致True.

例如:

any([False, False, False]) => False
any([False, True, False])  => True

为了更轻松地阅读您要执行的操作,我切换到enumerate()循环而不是范围。这将返回我们正在迭代的索引和当前值。对于工作表中的每个条目,我们可以检查该条目是否在您的状态列表中。

此处的print()语句会打印i匹配的值和您的条目。

for i, entry in enumerate(excel_file['Column Label']):
  if entry in states:
    print(i, entry)

注意:Python 隐藏了这个练习需要嵌套循环的事实。最上面的 for 循环很明显,但in这里的关键字是创建一个自己的循环。它正在与entry中的每个项目进行比较states,至少在找到匹配项之前是这样。


推荐阅读