python pandas 中分析多个工作表的 AttributeError
AttributeError for analyzing multiple sheets in python pandas
我包括了 sheet_name=None
来分析每一个 sheet 但后来我在阅读 columns
时遇到了问题。
import pandas
df = pd.read_excel('file.xlsx', sheet_name=None, index_col=[0])
df.columns = df.columns.str.split('_', expand=True)
我收到这条错误消息
df.columns = df.columns.str.split('_', expand=True)
AttributeError: 'dict' object has no attribute 'columns'
它在一个 sheet 上运行完美,为什么不能在多个 sheet 上运行?
sheet_namestr, int, list, or None, default 0
Strings are used for sheet names. Integers are used in zero-indexed sheet positions. Lists of strings/integers are used to request multiple sheets. Specify None to get all sheets.
这意味着当 sheet_name
指定为 None
时,Pandas 加载所有 sheet 作为单独的 DataFrame
并将它们存储在 dict
以 sheet 名称作为键,相应的 DataFrame
作为值。
要达到类似的效果,您可能需要:
df_dict = pd.read_excel('file.xlsx', sheet_name=None, index_col=[0])
for name, df in df_dict.items():
df.columns = df.columns.str.split('_', expand=True)
当您将 sheet_name
指定为 None
时,那么 returns dict
,这就是您获得 'dict' object has no attribute 'columns'
的原因,但是如果您想要获得DataFrame 然后你可以试试这个:
for key in df:
df[key].columns = df[key].columns.str.split('_', expand=True)
print(df[key].head())
但是如果您知道您想要的 sheet 的确切名称,那么请执行以下操作:
df["<>"].column=df["<>"].columns.str.split('_', expand=True)
有关所有这些的更多信息,请访问 here
sheet_name
: str, int, list, or None, default 0
Strings are used for sheet names. Integers are used in zero-indexed sheet positions. Lists of strings/integers are used to request multiple sheets. Specify None to get all sheets.
Available cases:
Defaults to 0: 1st sheet as a DataFrame
1: 2nd sheet as a DataFrame
"Sheet1": Load sheet with name “Sheet1”
[0, 1, "Sheet5"]: Load first, second and sheet named “Sheet5” as a dict of DataFrame
None: All sheets.
解决方案:
dfs = pd.read_excel('file.xlsx', sheet_name=None, index_col=[0])
with pd.ExcelWriter('output_file.xlsx') as writer:
for name, df in dfs.items():
print(name)
df.columns = df.columns.str.split('_', expand=True)
我包括了 sheet_name=None
来分析每一个 sheet 但后来我在阅读 columns
时遇到了问题。
import pandas
df = pd.read_excel('file.xlsx', sheet_name=None, index_col=[0])
df.columns = df.columns.str.split('_', expand=True)
我收到这条错误消息
df.columns = df.columns.str.split('_', expand=True)
AttributeError: 'dict' object has no attribute 'columns'
它在一个 sheet 上运行完美,为什么不能在多个 sheet 上运行?
sheet_namestr, int, list, or None, default 0 Strings are used for sheet names. Integers are used in zero-indexed sheet positions. Lists of strings/integers are used to request multiple sheets. Specify None to get all sheets.
这意味着当 sheet_name
指定为 None
时,Pandas 加载所有 sheet 作为单独的 DataFrame
并将它们存储在 dict
以 sheet 名称作为键,相应的 DataFrame
作为值。
要达到类似的效果,您可能需要:
df_dict = pd.read_excel('file.xlsx', sheet_name=None, index_col=[0])
for name, df in df_dict.items():
df.columns = df.columns.str.split('_', expand=True)
当您将 sheet_name
指定为 None
时,那么 returns dict
,这就是您获得 'dict' object has no attribute 'columns'
的原因,但是如果您想要获得DataFrame 然后你可以试试这个:
for key in df:
df[key].columns = df[key].columns.str.split('_', expand=True)
print(df[key].head())
但是如果您知道您想要的 sheet 的确切名称,那么请执行以下操作:
df["<>"].column=df["<>"].columns.str.split('_', expand=True)
有关所有这些的更多信息,请访问 here
sheet_name
: str, int, list, or None, default 0Strings are used for sheet names. Integers are used in zero-indexed sheet positions. Lists of strings/integers are used to request multiple sheets. Specify None to get all sheets.
Available cases:
Defaults to 0: 1st sheet as a DataFrame
1: 2nd sheet as a DataFrame
"Sheet1": Load sheet with name “Sheet1”
[0, 1, "Sheet5"]: Load first, second and sheet named “Sheet5” as a dict of DataFrame
None: All sheets.
解决方案:
dfs = pd.read_excel('file.xlsx', sheet_name=None, index_col=[0])
with pd.ExcelWriter('output_file.xlsx') as writer:
for name, df in dfs.items():
print(name)
df.columns = df.columns.str.split('_', expand=True)