为什么不 运行 我的脚本 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=None
,df
不是数据框而是数据框的字典,其中键是 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
为什么不 运行 我的脚本用于 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=None
,df
不是数据框而是数据框的字典,其中键是 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