【发布时间】:2019-07-08 15:47:03
【问题描述】:
我正在尝试使用 Pandas 读取多个大型 Excel 文件并将它们组合成一个 CSV,并且只需要每个文件的一个数据表中的数据。
在此数据表中,有许多我不需要数据的填充行 - 基本上,我需要的数据从每个文件的不同位置开始。我需要的数据的第一列称为Row Labels。
有没有办法让 Pandas 将数据拉到以 Row Labels 为标题的列下方以及该列右侧的四列?
现在,这是我一直试图无济于事的:
for f in glob.glob("../Test/Drawsheet*.xlsx"):
df_temp = pd.ExcelFile(f)
if 'PVT' in df_temp.sheet_names:
df = pd.read_excel(df_temp, 'PVT', index_col=None, usecols='Row Labels')
#df.to_csv('your_csv.csv', encoding='utf-8')
#df = df_temp.parse('PVT')
all_data = all_data.append(df, ignore_index=True, sort=True)
【问题讨论】:
-
读入标题,找出列的位置,然后用
usecols指定你需要的5个索引读入文件。 -
因此每个文件的列都不同。例如,有时它可能从 G 列开始,而其他时候则从 H 列开始。
-
这就是为什么您只读取一行 (
nrows=1)(非常快)然后读取idx = df.columns.get_loc('Row Labels'),然后您读取指定usecols=[*range(idx, idx+5)]的整个文件 -
如果行从第 10 行而不是第 1 行开始,知道如何执行此操作吗?
-
添加
skiprows=10或添加多少行,需要多少行。