python - 循环和转换excel文件时无法分配给函数调用
问题描述
使用此代码:
xls = pd.ExcelFile('test.xlsx')
sn = xls.sheet_names
for i,snlist in list(zip(range(1,13),sn)):
'df{}'.format(str(i)) = pd.read_excel('test.xlsx',sheet_name=snlist, skiprows=range(6))
我收到此错误:
'df{}'.format(str(i)) = pd.read_excel('test.xlsx',sheet_name=snlist, skiprows=range(6)) ^ SyntaxError: cannot assign to function call
我无法理解错误以及如何解决。有什么问题?
df+str(i) 也返回错误
我想让结果为: df1 = pd.read_excel.. list1... df2 = pd.read_excel... list2....
解决方案
您不能将结果分配df.read_excel
给'df{}'.format(str(i))
-- 这是一个看起来像,等的字符串。这就是您收到此错误消息的原因。该错误消息可能令人困惑,因为它将其视为对“函数调用”的赋值。"df0"
"df1"
"df2"
似乎您想要一个列表或DataFrame
s 字典。
为此,请将 的结果分配给df.read_excel
变量,例如df
,然后append
将其分配给列表,或将其添加到DataFrame
s 的字典中。
作为一个列表:
dataframes = []
xls = pd.ExcelFile('test.xlsx')
sn = xls.sheet_names
for i, snlist in list(zip(range(1, 13), sn)):
df = pd.read_excel('test.xlsx', sheet_name=snlist, skiprows=range(6))
dataframes.append(df)
作为字典:
dataframes = {}
xls = pd.ExcelFile('test.xlsx')
sn = xls.sheet_names
for i, snlist in list(zip(range(1, 13), sn)):
df = pd.read_excel('test.xlsx', sheet_name=snlist, skiprows=range(6))
dataframes[i] = df
在这两种情况下,您都可以通过如下索引来访问DataFrame
s:
for i in range(len(dataframes)):
print(dataframes[i])
# Note indexes will start at 0 here instead of 1
# You may want to change your `range` above to start at 0
或者更简单地说:
for df in dataframes:
print(df)
对于字典,您可能想要:
for i, df in dataframes.items():
print(i, df)
# Here, `i` is the key and `df` is the actual DataFrame
如果您确实想要df1
, df2
etc 作为键,请改为执行以下操作:
dataframes[f'df{i}'] = df
推荐阅读
- c# - 当角色环顾四周时,Contoller 脚本不会改变方向
- struts - 从 Struts 2.3.x 迁移到 Struts 2.5
- r - 选择性编织R笔记本
- python - 我不确定如何让我的程序排序并从外部文件中读取
- macros - 规范的 match-letrec 实现如何工作?
- ios - 如果使用 Xcode 10 编译,是否可以从编译 iOS 13 功能中排除?
- java - 基于随机词用星号填充数组
- excel - 如何在vba中保护工作表并取消保护列表对象(扩展到删除和添加行)
- vis.js - 使用打字稿在可见网络中设置边缘的问题
- python - 如何使用 python 提取动态网页的所有 url/链接。我需要这个来验证不同网页的断开链接