【发布时间】:2022-01-12 05:24:16
【问题描述】:
我有一个包含 35 个工作表的 Excel 工作簿,每个工作表有 100 多行和 30 多列。我只想要每个工作表中的 9 行(这 9 行的所有列)。我曾经能够使用 skiprows 获取行,因为有一个模式。我使用以下内容从每个工作表中读取所需的行:
xl = pd.ExcelFile('group.xlsx')
locations = (list(xl.sheet_names))
df = pd.concat(pd.read_excel('group.xlsx', sheet_name= locations, skiprows = 62, nrows= 9, usecols= None), axis=1, ignore_index= True)
这不再适用于我,因为我需要的信息不再位于每个工作表的同一行中(某些工作表可能位于第 62 行、第 73 行或第 147 行等)。有没有办法跳转到特定的字符串(“ABC 123”)而不是特定的行?每个工作表中只出现一次“ABC 123”字符串。
如果没有办法跳转到一个字符串,有没有办法通过改变这个来获得每个工作表的“ABC 123”字符串之后的 9 行:
dfa = pd.read_excel('group.xlsx', sheet_name=None)
data = {}
for sheet, df in dfa.items():
data[sheet] = df.loc[df['col_2'] == "ABC 123"]
df = pd.concat(data)
我觉得这差不多了,但我不确定我需要添加什么。
【问题讨论】:
标签: python excel pandas concatenation