AttributeError用于分析python pandas中的多个表



我包括sheet_name=None来分析每个表,但随后我在阅读columns时遇到了问题。

import pandas
df = pd.read_excel('file.xlsx', sheet_name=None, index_col=[0])
df.columns = df.columns.str.split('_', expand=True)

I got this error message

df.columns = df.columns.str.split('_', expand=True)
AttributeError: 'dict' object has no attribute 'columns'

它在一张纸上完美地工作,为什么不能在多张纸上工作?

根据Pandas doc

sheet_namestr, int, list,或None,默认为0字符串用于工作表名称。整数用于零索引的工作表位置。字符串/整数列表用于请求多个表单。指定None获取所有工作表。

这意味着当sheet_name被指定为None时,Pandas将加载所有工作表作为单独的DataFrames,并将它们存储在dict中,工作表名称作为键,相应的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,然后返回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())

但是如果你知道你想要的表单的确切名称,那么就这样做:

df["<>"].column=df["<>"].columns.str.split('_', expand=True)

有关所有这些的更多信息请访问这里

sheet_name: str, int, list,或None,默认为0

字符串用于表名。整数用于零索引的工作表位置。字符串/整数列表用于请求多个表单。指定None获取所有工作表。

可用的情况下:

默认为0:第一个表作为DataFrame

1:第二个表作为DataFrame

Sheet1":加载名称为"Sheet1"的工作表

[0,1, "Sheet5"]:将第一,第二和名为"Sheet5"的工作表加载为DataFrame的字典

None:所有表。

解决方案:

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)

相关内容

  • 没有找到相关文章

最新更新