我想搜索一列,直到找到 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"))
眼眸繁星
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
添加回答
举报
0/150
提交
取消