执行startswith()方法后如何查找字符串的索引

我想搜索一列,直到找到 str Linear,找到该位置的索引,向其添加 1,然后通过切片提取数据帧。


我尝试过以下方法


for sheet_name, df in Input_Data.items():

    for line in sheet_name:

        if line.startswith('Linear'):

            index = line.index('Linear')

            break

    df1 = df[index+1:236]

    df1.loc[:,'Unnamed: 26']*=-1  

    df1.loc[:,'Unnamed: 27']*=-1

    df=df1.sort_index(ascending=False)

    Indexer=df.columns.tolist()

    df = [(pd.concat([df[Indexer[0]],df[Indexer[num]]],axis=1)) for num in [1,2,3,4,5,6]]#concatenation

    df = [(df[num].astype(str).agg(','.join, axis=1)) for num in [0,1,2,3,4,5]]

    df=pd.DataFrame(df)

    df=df.loc[0].append(df.loc[1].append(df.loc[2].append(df.loc[3].append(df.loc[4].append(df.loc[5])))))

然而我的“索引”返回 0,实际上它应该是 125....


潇潇雨雨
浏览 97回答 2
2回答

跃然一笑

如果line.startswith('Linear'),“线性”将是 中的第一个词line。如果你想要的是行号,可以尝试查找;enumerate是你的朋友。def find_index_of(lines, predicate):  for index, line in enumerate(lines):    if predicate(line):      return indexindex = find_index_of(sheetname, lambda x: x.startswith("Linear"))

眼眸繁星

您执行的第一个检查startswith意味着字符串以参数开始 - 索引 0 并向前,因此index在这种情况下将始终为 0。我认为您正在寻找的循环是使用范围或索引号来查找以该字符串开头的行,并引用该行之后的所有行。for index in range(len(sheet_name)):    if sheet_name[index].startswith('Linear'):        df1 = df[index+1:236]        break
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python