python - Python递归与for循环
问题描述
我想用 Python 处理一些文件并有以下脚本:
import pandas as pd
loc1 = r'D:\1103\DC431.txt'
loc2 = r'D:\1103\DC432.txt'
loc3 = r'D:\1103\DC433.txt'
loc4 = r'D:\1103\DC434.txt'
loc5 = r'D:\1103\DC435.txt'
loc6 = r'D:\1103\DC436.txt'
loc7 = r'D:\1103\DC437.txt'
# Start
df1 = pd.read_table(loc1, sep=('\t'), engine='python')
df2 = pd.read_table(loc2, sep=('\t'), engine='python')
df3 = pd.read_table(loc3, sep=('\t'), engine='python')
df4 = pd.read_table(loc4, sep=('\t'), engine='python')
df5 = pd.read_table(loc5, sep=('\t'), engine='python')
df6 = pd.read_table(loc6, sep=('\t'), engine='python')
df7 = pd.read_table(loc7, sep=('\t'), engine='python')
s1 = df1[df1['No (Int)'] == 4]
s2 = df2[df2['No (Int)'] == 4]
s3 = df3[df3['No (Int)'] == 4]
s4 = df4[df4['No (Int)'] == 4]
s5 = df5[df5['No (Int)'] == 4]
s6 = df6[df6['No (Int)'] == 4]
s7 = df7[df7['No (Int)'] == 4]
# End
# Other scripts
我试图使用 for 循环简化上述开始到结束之间的脚本,但 python 无法识别:
for n in range (1,8):
dfn = pd.read_table(locn, sep=('\t'), engine='python')
sn = dfn[dfn['No (Int)'] == 4]
有人有好的想法吗?
解决方案
dfn
并且sn
是变量名称,python 不知道您的意思是 index n
。您可以改用列表。首先没有列表理解:
import pandas as pd
locs = []
dfs = []
ss = []
for i in range(1, 8):
locs[i] = r'D:\1103\DC43{}.txt'.format(i)
dfs[i] = pd.read_csv(locs[i], sep='\t')
ss[i] = dfs[i][dfs[i]['No (Int)'] == 4
使用列表理解:
import pandas as pd
locs = [r'D:\1103\DC43{}.txt'.format(i) for i in range(1,8)]
dfs = [pd.read_csv(loc, sep='\t') for loc in locs]
ss = [df[df['No (Int)'] == 4] for df in dfs]
笔记:
pandas.read_table
已弃用,取而代之的是pandas.read_csv
.- C 引擎可能就足够了,只有在需要时才添加 python 引擎。
推荐阅读
- python - 在python中添加简单的菜单
- c++ - Arduino 我如何存储最后一个 IR 代码以检查它是否需要重复?
- c# - 发布列表中缺少编号的列表
- reactjs - 使用打字稿时如何在props函数中声明一个react ref
- scipy - 为什么我无法成功扩展 scipy rv_discrete 类?
- java - Thymeleaf 动态引导模式,来自带有 html 表的编辑按钮
- dart - Flutter:如何避免flutter自动改变文本颜色
- mysql - 如何设置触发器以从另一个模式插入另一个表?
- ios - 检查是否有可用的互联网 ios
- java - 如何使用控制器外部的 JPA 存储库更新行值?