将多个 sheet 连同列作为它们的 sheet 名称
Joining multiple sheets together with column as their sheet name
我在 Python 中有一个函数 Pandas 可以转换从 excel 文件读入的一些 df。
那个 Excel 文件有 5 张,我想通过相同的函数处理所有这些,然后在最后加入它们,并增加一个列 df['customer'] = sheet name
假设我想通过以下函数 运行 工作表:
def function(df):
df = df.rename(columns=df.iloc[0]).drop(df.index[0]) #drop first row
df = df.rename(columns={np.nan: 'Model'}) #rename column to 'model'
indexNames = df[df['Model'].isin(['No','b', 'a','1988 Total'])].index
df = df.drop(indexNames)
df = df.dropna(axis=1,how='all')
return df
最后,我想有 5 个不同的 df(它们具有相同的结构),我可以在最后加入。但是,在 5 个不同的工作表中,我需要 sheet_name 显示为一列,这样我才能区分它们。
我尝试使用以下代码加入他们:
df = pd.concat(pd.read_excel("Final- Stock and Sales WG 2021 New format.xlsx", sheet_name=None), ignore_index=True)
然而,当 运行 在我的 ValueError: cannot reindex from a duplicate axis
函数上使用此行时,我得到一个值错误
indexNames = df[df['Model'].isin(['No','b', 'a','1988 Total'])].index
欢迎任何更正或其他方法。谢谢!
xls = pd.ExcelFile('datavallatestitemstop2.xlsx')
df_main = pd.DataFrame()
for sheet in xls.sheet_names:
df = pd.read_excel(xls, sheet)
df['Sheet-Name'] = sheet
df_main = df_main.append(df)
输出 -
我在 Python 中有一个函数 Pandas 可以转换从 excel 文件读入的一些 df。
那个 Excel 文件有 5 张,我想通过相同的函数处理所有这些,然后在最后加入它们,并增加一个列 df['customer'] = sheet name
假设我想通过以下函数 运行 工作表:
def function(df):
df = df.rename(columns=df.iloc[0]).drop(df.index[0]) #drop first row
df = df.rename(columns={np.nan: 'Model'}) #rename column to 'model'
indexNames = df[df['Model'].isin(['No','b', 'a','1988 Total'])].index
df = df.drop(indexNames)
df = df.dropna(axis=1,how='all')
return df
最后,我想有 5 个不同的 df(它们具有相同的结构),我可以在最后加入。但是,在 5 个不同的工作表中,我需要 sheet_name 显示为一列,这样我才能区分它们。
我尝试使用以下代码加入他们:
df = pd.concat(pd.read_excel("Final- Stock and Sales WG 2021 New format.xlsx", sheet_name=None), ignore_index=True)
然而,当 运行 在我的 ValueError: cannot reindex from a duplicate axis
函数上使用此行时,我得到一个值错误
indexNames = df[df['Model'].isin(['No','b', 'a','1988 Total'])].index
欢迎任何更正或其他方法。谢谢!
xls = pd.ExcelFile('datavallatestitemstop2.xlsx')
df_main = pd.DataFrame()
for sheet in xls.sheet_names:
df = pd.read_excel(xls, sheet)
df['Sheet-Name'] = sheet
df_main = df_main.append(df)
输出 -