python - 升级 Pandas/Numpy 后 for-loop 不起作用
问题描述
我正在运行一个 python 脚本,其基本思想是扫描目录中的文本文件,例如:
files = glob.glob("*.txt")
files
-------
output:
['name_6-076_01.txt',
'name_6-077_00.txt',
'name_6-077_01.txt',
'name_6-078_00.txt',
'name_6-078_01.txt',
'name_6-079_00.txt']
请注意它有两个相同的*077*.txt
条目(我有一些文件列表,甚至更多)。_00 and _01
*078*.txt
我正在尝试将这些文件(来自*077*
)放入单个 excel 工作表中(考虑导出到 excel)。
lane_spot = ['Spot_6-076_01', 'Spot_6-077_00', 'Spot_6-077_01', 'Spot_6-078_00', 'Spot_6-078_01', 'Spot_6-079_00']
spotlanes()
是一个返回数据框的函数。
writer = pd.ExcelWriter(f'Summary_{datetime.now().strftime("%Y-%m-%d_%H%M%S")}.xlsx')
我在这方面很成功。但是升级到 Pandas(0.23.4 到 1.0.3)已经打乱了一切。
以下是对我有用的代码,没有任何问题:
for i in range(len(files)):
try:
if (files[i][:-7] == files[i-1][:-7]):
sheet = lane_spot[i-1]
lane = spotlanes(files[i])
lane[f'{lane_spot[i]}'] = [f'{lane_spot[i]}', f'{lane_spot[i]}']
lane.set_index(f'{lane_spot[i]}',append=True, inplace=True)
lane.index = lane.index.swaplevel(0,1)
lane = lane.rename_axis(['Spot','Method'])
lane.to_excel(writer,sheet_name=f'{sheet}',index=True, startrow=3)
writer.save()
else:
sheet = lane_spot[i]
lane = spotlanes(files[i])
lane[f'{lane_spot[i]}'] = [f'{lane_spot[i]}', f'{lane_spot[i]}']
lane.set_index(f'{lane_spot[i]}',append=True, inplace=True)
lane.index = lane.index.swaplevel(0,1)
lane = lane.rename_axis(['Spot','Method'])
lane.to_excel(writer,sheet_name=f'{sheet}',index=True)
writer.save()
except IndexError:
print("EOF")
根据需要在外部测试相同的代码:
In [14]: for i in range(len(files)):
...: try:
...: if (files[i][:-7] == files[i-1][:-7]):
...: print(f'sheet{i-1} appended', lane_spot[i])
...: else:
...: print(f'sheet{i}', lane_spot[i])
...:
...: except IndexError:
...: print("fo")
...:
...:
sheet0 Spot_6-076_01
sheet1 Spot_6-077_00
sheet1 appended Spot_6-077_01
sheet3 Spot_6-078_00
sheet3 appended Spot_6-078_01
sheet5 Spot_6-079_00
sheet5 appended Spot_6-079_01
sheet7 Spot_6-080_00
sheet7 appended Spot_6-080_01
sheet9 Spot_7-008_00
sheet9 appended Spot_7-008_01
sheet11 Spot_7-009_00
因此,基本上,在第一次迭代后它不会在 Excel 表中写入任何内容。它工作得很好,床单也得到了很好的补充。你能告诉我excel引擎是否有任何东西吗,我有openpyxl
,也有xlsxwriter
,虽然我没有同时使用它们。
我需要输出到一个excel文件中,其中包含相应的excel表中的内容
解决方案
我卸载了XLSXWriter
并做了一些小的代码更改。看起来有冲突,openpyxl
和XLSXWriter
if:
...
sheet = lane_spot[i-1][:-3]
...
else:
...
sheet = lane_spot[i][:-3]
...
这个固定!
推荐阅读
- php - 通过ajax调用将参数传递给控制器中的方法
- python - 在 Django-Filters 中使用 Django-MPTT 让子节点过滤父节点
- youtube - 从 Youtube 获取视频 ID“Live Stream”
- react-native - 如何使用 npm 安装 lodash.filter?
- python-3.x - 动态更改 CSV 文件的标题
- google-contacts-api - 您无法删除此项目,因为它与 Dialogflow 代理相关联
- types - Haxe:如何检查变量是否为函数
- html - 将样式应用于类而不影响导航 LI 中的其他类?
- javascript - 复选框上的 html5 验证
- swiftui - 在 init() 中初始化 2 个变量:在初始化所有存储的属性之前使用“self”