我有10个Excel工作表,每个工作表预计相同的标题/列名。
文件名为ABC.xlsx
、DEF_123.xlsx
等。excel文件名中没有命名通配符模式。
我的问题是,一些Excel文件的标题出现在第一行本身。而对于一些Excel文件,它可能出现在第2行(第1行是空的),对于一些文件,它可能出现在第5行(前4行是空的)。
我的目标是做到以下几点
a)将来自每个excel文件的数据组合/垂直堆叠到一个 Dataframe 中
所以,我尝试了下面的
record_counts = []
dfs=[]
folder_path = Path.cwd()
filenames = sorted(glob.glob(str(folder_path)+"\*.xlsx"))
for f in filenames:
filename = os.path.basename(f)
df = pd.read_excel(filename, header=None)
header_row = 0
if df.iloc[0].isna().all():
header_row = 1
df = pd.read_excel(filename, header=header_row)
count = len(df.index)
record_counts.append(count)
dfs.append(df)
combined_df = pd.concat(dfs, ignore_index=True)
但是上面的代码假设标题出现在第一行(第0个位置)。如果不是,那么我们看第一位置(第二行)。但这是硬编码。
我如何识别标题动态出现的行并从那里获取数据?
3条答案
按热度按时间mu0hgdu01#
你需要的只是一个正确的逻辑来识别第一个非空行:
kq0g1dla2#
试试这个:
vom3gejh3#
我设法找到了另一种方法来解决这个问题,通过识别
first valid index
这帮助我确定了第一个非空行