簡體   English   中英

如何遍歷列表以查看列表中的任何值是否與另一個單元格中的值的一部分匹配?

[英]How do I iterate though a list to see if any value in the list matches part of a value in another cell?

我有一份來自美國圖書館的美國州列表。 然后,我試圖遍歷 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

這不是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關鍵字是創建一個自己的循環。 它正在將entrystates中的每個項目進行比較,至少在找到匹配項之前是這樣。

試試下面的代碼,如果 iterable 中的任何項目為真,則any() function 返回True ,否則返回False

any(state in excel_file['Column Label'][i] for state in states)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM