如何在列表中迭代直到python找到某个单词?

如何在列表中迭代直到python找到某个单词?,python,pandas,list,Python,Pandas,List,我试图遍历下面的列表,它是从HTML表中检索到的 table = pd.read_html(url) 我提取了第三个表: table1 = table[2] 我试图数到列表变量表1中的某个单词。列表的输出结构如下所示 0 1 2 <----------headers 1 A AA BBB 2 B BB CCC 3 C CC

我试图遍历下面的列表,它是从HTML表中检索到的

table = pd.read_html(url)
我提取了第三个表:

table1 = table[2]
我试图数到列表变量表1中的某个单词。列表的输出结构如下所示

      0        1        2                <----------headers
1     A        AA       BBB
2     B        BB       CCC
3     C        CC       CCC
4     D        DD       DDD
5    catchme   catchme  catchme
6     E        FF       FFF
7     G        GG       GGG
        for phrase in table1:        #variable stored list
         print(phrase)
         if 'catchme' in phrase:
            finalinput = ['catchme'] + [i]
         else :
            i = i+1
但是上面的代码只在AA BBB中循环,并且正在退出循环


提前非常感谢。

我认为列表中的第一个元素可能是有熊猫数据框对象

试试下面的

table[0][table[0].isin(['catchme']).any(axis=1)].index[0]
例如,我试图从下面的url中读取,并在输出中获取列表类型对象,但当我试图遍历它时,我在第一个索引中找到了dataframe对象

示例代码:

import pandas as pd

df = pd.read_html("https://www.railyatri.in/trains-between-stations")
df[0][df[0].isin(['Madgaon (MAO)']).any(axis=1)].index[0]
# output 4

之所以会出现这种情况,是因为pandas.read_html函数返回的是数据帧列表,而不是数据帧对象。

我认为列表的第一个元素可能是pandas数据帧对象

试试下面的

table[0][table[0].isin(['catchme']).any(axis=1)].index[0]
例如,我试图从下面的url中读取,并在输出中获取列表类型对象,但当我试图遍历它时,我在第一个索引中找到了dataframe对象

示例代码:

import pandas as pd

df = pd.read_html("https://www.railyatri.in/trains-between-stations")
df[0][df[0].isin(['Madgaon (MAO)']).any(axis=1)].index[0]
# output 4

之所以会出现这种情况,是因为pandas.read_html函数返回的是数据帧列表,而不是数据帧对象。

一个非常简单的解决方案是在2D列表中进行迭代,遇到这种情况时中断

catchphrase = 'DD'
catchphrase_row = None
for index, row in table1.iterrows():
    if any(catchphrase in r for r in row.to_list()):
        catchphrase_row = index
        break

# Use pandas just to show the data
print(pd.DataFrame(table1))

# Show where the catchphrase was found
print(f'{catchphrase} found in row {catchphrase_row}')
输出

   0   1    2
0  A  AA  AAA
1  B  BB  BBB
2  C  CC  CCC
3  D  DD  DDD
4  E  EE  EEE
5  F  FF  FFF
6  G  GG  GGG
DD found in row 3

一个非常简单的解决方案是在2D列表中迭代,遇到条件时中断

catchphrase = 'DD'
catchphrase_row = None
for index, row in table1.iterrows():
    if any(catchphrase in r for r in row.to_list()):
        catchphrase_row = index
        break

# Use pandas just to show the data
print(pd.DataFrame(table1))

# Show where the catchphrase was found
print(f'{catchphrase} found in row {catchphrase_row}')
输出

   0   1    2
0  A  AA  AAA
1  B  BB  BBB
2  C  CC  CCC
3  D  DD  DDD
4  E  EE  EEE
5  F  FF  FFF
6  G  GG  GGG
DD found in row 3


听起来你需要在另一个轴上迭代。如果没有url中的数据集,很难说清楚,因为我不知道您的数据是如何存储的。多亏了reply@falafelocelot,这是我尝试打印时的HTML表,结构与上面完全相同。它只是一个基本的python 2d列表吗?这是一个数据帧吗?这是一个2d列表@falafelocelot,谢谢。听起来你需要在另一个轴上迭代。如果没有url中的数据集,很难说清楚,因为我不知道您的数据是如何存储的。多亏了reply@falafelocelot,这是我尝试打印时的HTML表,结构与上面完全相同。它只是一个基本的python 2d列表吗?这是一个数据帧吗?这是一个2d列表@falafelocelot,thankyouHi@O.T.B Harmony Limited,如果您的问题得到解决,请将答案标记为已接受,否则如果您的案例中出现任何错误或意外输出,请发表评论。Hi@vedant感谢您的回复,但我尝试获取的网站中有3个表,所以当我访问第二个表时,我必须使用df=df[2]。这是将数据类型更改为列表,是否有解决方案?。提前感谢您在您的情况下,这可能是一个嵌套列表,您是否尝试访问df[2][0]?我可能会遇到此错误,请返回最近的调用:文件C:/Users/blablabla/Desktop/testmain.py,第126行,在printtable3[2][0]文件C:\Users\blablablablai\PycharmProjects\untitled\venv\lib\site packages\pandas\core\frame.py,第3024行,在getitem indexer=self.columns.get_lockey文件C:\Users\blabla\PycharmProjects\untitled\venv\lib\site packages\pandas\core\indexes\base.py,第3082行,在get_loc raise KEYERRORKEYFROM err KeyError:2Try printtable3[2]中。iloc[0]Hi@O.T.B Harmony Limited,如果您的查询已解决,请将答案标记为已接受,如果您的案例中出现任何错误或意外输出,请发表评论。Hi@vedant感谢您的回复,但我尝试获取的网站中有3个表,因此当我访问第2个表时,我必须使用df=df[2]。这是将数据类型更改为列表,是否有解决方案?。提前感谢您在您的情况下,这可能是一个嵌套列表,您是否尝试访问df[2][0]?我可能会遇到此错误,请返回最近的调用:文件C:/Users/blablabla/Desktop/testmain.py,第126行,在printtable3[2][0]文件C:\Users\blablablablai\PycharmProjects\untitled\venv\lib\site packages\pandas\core\frame.py,第3024行,在getitem indexer=self.columns.getúlockey文件C:\Users\blabla\PycharmProjects\untitled\venv\lib\site packages\pandas\core\indexes\base.py,第3082行,在getúloc raise KEYERRORKEYFROM err KeyError:2Try printtable3[2]中,iloc[0]我收到此错误我收到此错误回溯最近一次调用:文件C:\blbla\PycharmProjects\untitled\venv\lib\site packages\pandas\core\index\base.py,第3080行,在get\u loc return self中。_engine.get\u loccasted\u key文件pandas\libs\index.pyx,第70行,在pandas中。_libs.index.IndexEngine.get\loc文件pandas\libs\index.pyx,pandas.libs.index.IndexEngine.get.loc File pandas.libs\hashtable.class.helper.pxi第101行,pandas.libs.hashtable.PyObjectHashTable.get.\u item我试图打印变量table1,它显示为您上面提到的2D列表,而不是数据帧,这很正常。我更新了我的答案,假设table1是一个数据帧。我得到了这个错误TypeError:类型为“float”的参数不可iterable。但是当我打印变量类型时,它表示感谢您的回答
我收到此错误我收到此错误回溯最近一次调用:文件C:\blbla\PycharmProjects\untitled\venv\lib\site packages\pandas\core\index\base.py,第3080行,在get\u loc return self中。_engine.get\u loccasted\u key文件pandas\libs\index.pyx,第70行,在pandas中。_libs.index.IndexEngine.get\loc文件pandas\libs\index.pyx,pandas.libs.index.IndexEngine.get.loc File pandas.libs\hashtable.class.helper.pxi第101行,pandas.libs.hashtable.PyObjectHashTable.get.\u item我试图打印变量table1,它显示为您上面提到的2D列表,而不是数据帧,这很正常。我更新了我的答案,假设table1是一个数据帧。我得到了这个错误TypeError:类型为“float”的参数不可iterable。但是当我打印变量类型时,它表示感谢您的回答