为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

潇潇雨雨 2023-09-05 17:08:32
我想搜索一列,直到找到 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....
查看完整描述

2 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

如果line.startswith('Linear'),“线性”将是 中的第一个词line。


如果你想要的是行号,可以尝试查找;enumerate是你的朋友。


def find_index_of(lines, predicate):

  for index, line in enumerate(lines):

    if predicate(line):

      return index


index = find_index_of(sheetname, lambda x: x.startswith("Linear"))


查看完整回答
反对 回复 2023-09-05
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

您执行的第一个检查startswith意味着字符串以参数开始 - 索引 0 并向前,因此index在这种情况下将始终为 0。


我认为您正在寻找的循环是使用范围或索引号来查找以该字符串开头的行,并引用该行之后的所有行。


for index in range(len(sheet_name)):

    if sheet_name[index].startswith('Linear'):

        df1 = df[index+1:236]

        break


查看完整回答
反对 回复 2023-09-05
  • 2 回答
  • 0 关注
  • 96 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信