![](/img/trans.png)
[英]How do I use a number from a complex list as a heading / How do I print only part of a list that matches a certain value
[英]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
關鍵字是創建一個自己的循環。 它正在將entry
與states
中的每個項目進行比較,至少在找到匹配項之前是這樣。
試試下面的代碼,如果 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.