处理excel表格中出现多个数据块的方法

file_tb = pd.read_excel(remote_file="test.xlsx",
                        sheet_name=0,
                        engine="openpyxl",
                        header=1
                       )

##查看行或列是否有空格(以下的df为Dataframe类型,axis=0,代表列,axis=1代表行,以下的返回值都是行或列索引加上布尔值)
df_list = file_tb.isnull().all(axis=1)
##获取都为空格的行的序号
if not df_list.any():
    print('不需要操作')
    indexList = []
else:
    indexList = file_tb[df_list].index
print(indexList)
##按获取到的序号进行切割
ndf_list = np.array_split(file_tb, indexList)
##按照指定字符串来确定数据块
index_flag = "Sam's DI"
##是否不选取第一行
drop_index_flag = 1
dff = pd.DataFrame()
##获取准确的df
for ndf in ndf_list:
    ##将有空字符串替换为NaN
    ndf.replace(to_replace=r'^\s*$', value=np.nan, regex=True, inplace=True)
    ##清空所有行都为空值的行和列
    df = ndf.dropna(axis=0, how="all")
    df = df.dropna(axis=1, how="all")
    ##重置序号
    df.reset_index(drop=True, inplace=True)
    print(df)
    ##获取第一行的列表
    dlist = df.head(1).values.tolist()
    dlist = dlist[0] if dlist else []
    if index_flag in dlist:
	dff = df
	if drop_index_flag:dff = df[1:]
	break

if len(dff)==0:dff=ndf_list[0]
##df变为以第一行作为列名
def change_df(df):
    arr = df.values
    new_df = pd.DataFrame(arr[1:, :], columns=arr[0, :])
    ##重置序号
    new_df.reset_index(drop=True, inplace=True)
    return new_df
dff = change_df(dff)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值