为什么不 运行 我的脚本 excel 文件中的每个 sheet pandas

Why won't to run my script for every sheet in excel file with pandas

为什么不 运行 我的脚本用于 excel 文件中的每个 sheet?我在 excel 上为 运行 写了一个脚本,在我添加 sheet_name=None 之前它运行良好,请参阅我的脚本的简化版本。

import pandas as pd
df = pd.read_excel('file.xlsx', sheet_name=None, index_col=[0])
df.columns = df.columns.str.split('_', expand=True)
new_data = df.stack(0)
new_data1 = new_data.eval('C = A + B')
new_data2 = new_data1.eval('C = A / B')
new_data2.to_excel('multisheet.xlsx')

当我运行在第三行出错时,看到一个错误!

AttributeError                            Traceback (most recent call last)
<ipython-input-22-7cc1bc9021ef> in <module>
      1 import pandas as pd
      2 df = pd.read_excel('file.xlsx', sheet_name=None, index_col=[0])
----> 3 df.columns = df.columns.str.split('_', expand=True)
      4 new_data = df.stack(0)
      5 new_data1 = new_data.eval('C = A + B')

AttributeError: 'dict' object has no attribute 'columns'

我试过这样解决...

import pandas as pd
dff = pd.read_excel('file.xlsx', sheet_name=None, index_col=[0])
for name, df in dff.items():
    df.columns = df.columns.str.split('_', expand=True)
    new_data = df.stack(0)
    new_data1 = new_data.eval('C = A + B')
    new_data2 = new_data1.eval('C = A / B')
    new_data2.to_excel('multisheet.xlsx')

最后只会运行我最后的一个脚本sheet。但我需要为所有 sheet 运行 并保留 sheet 的名称。如何做到这一点?

如果您设置 sheet_name=Nonedf 不是数据框而是数据框的字典,其中键是 sheet 名称。

来自文档:

Returns DataFrame or dict of DataFrames

DataFrame from the passed in Excel file. See notes in sheet_name argument for more information on when a dict of DataFrames is returned.

dfs = pd.read_excel('Data1.xlsx', sheet_name=None)
>>> type(dfs)
dict

>>> dfs.keys()
dict_keys(['Sheet1', 'Sheet2', 'Sheet3'])

>>> dfs['Sheet1']
   id first_name   last_name
0   1    Roxanna  Calderbank
1   2       Hali   Kilmartin
2   3       Moss      Hatzar
3   4       Kari    Giordano
4   5      Dylan     Witnall