python - 使用内部 while 循环递增 for 循环
问题描述
我想在内部while循环增加之前增加一个外部for循环。有没有办法做到这一点?我的代码如下。我希望代码在 j 递增之前遍历所有 i。谢谢
data_files = glob.glob('4e3_2048_*.ksz_cl.txt')
for i in data_files:
data_i = pd.read_csv(i, sep=" ", header = None)
data_i.columns = ['a', 'b', 'c']
cls = []
j=0
while j<=len(i):
Z = [data_i['c'][j]]
#j=j+1
cls.append(Z)
解决方案
没有办法在内部循环之前增加外部循环——首先增加外部循环只会移动到内部循环的新版本(基本上是重新开始)。我认为您想切换循环的顺序。
这是一个例子:
data_files = glob.glob('4e3_2048_*.ksz_cl.txt')
dfs = []
for file in data_files:
df = pd.read_csv(file, sep=" ", header=None)
df.columns = ['a', 'b', 'c']
dfs.append(df)
cls = []
for i in range(len(dfs[0])):
row = []
for df in dfs:
row.append(df['c'][i])
cls.append(row)
第一个循环只是读取所有文件。第一个循环的逻辑可以合并到最内层循环(for df in dfs
)中,如果您的文件非常大并且不能全部存储在内存中一次。将这些循环分开是很有用的,这样您就知道需要执行多少行。
这是一个只有两个循环的示例:
data_files = glob.glob('4e3_2048_*.ksz_cl.txt')
first_file = pd.read_csv(data_files[0], sep=" ", header=None) #for the loop max val
cls = []
for i in range(len(first_file)):
row = []
for file in data_files:
df = pd.read_csv(file, sep=" ", header=None)
df.columns = ['a', 'b', 'c']
row.append(df['c'][i])
cls.append(row)
您可能还想添加一些错误 ( IndexError
) 处理。
推荐阅读
- javascript - Vue slot-props 没有被传递给子组件
- http - 使用 Wget 从网络请求中下载文件
- pdf - 如何在运行 Ghostscript 处理时保留 PDF 中未处理的页面?
- azure - 天蓝色。未找到订阅
- nginx - 路径的 Kubernetes 入口白名单 IP
- javascript - 在 TOR 中强制使用不同的电路
- html - 过滤特定页面上的 Blogger 帖子
- python - 在 pandas 数据框中查找元素的最新值
- python - 用于拟合正弦波的神经网络
- docker - 存储库“https://download.docker.com/linx/ubuntu bionic Release”没有发布文件