for循环执行第一个动作,但不执行第二个动作

2024-04-27 00:55:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个for循环,我想:

1)用数据制作透视表

2)将5min数据转换为30min数据

我的代码如下:

import numpy as np
import pandas as pd
import os 
import glob 


os.chdir('C:/Users/george/Desktop/testing/output/test')

for filename in os.listdir('C:/Users/george/Desktop/testing/output/test'):
    data = pd.read_csv(filename,skiprows=[0])
    table = pd.pivot_table(data, values='SCADAVALUE',columns=['DUID'],index='SETTLEMENTDATE', aggfunc=np.sum)
    table.to_csv(filename+'pivoted.csv')


my_csv_files = []
for file in os.listdir("C:/Users/george/Desktop/testing/output/test"):
    if file.endswith("*pivoted.csv"):
        table.set_index(table.columns[0])
        table.index = pd.to_datetime(table.index) 
        table_resampled = table.resample('30min',closed='right',label='right').mean() 
        table_resampled = table_resampled.reset_index() 
        table.to_csv(filename+'30min.csv')

代码执行第一个循环,但第二个循环不执行工作。为什么是这个吗?我的代码怎么了?你知道吗

编辑1:

image


Tags: csv数据testimportforoutputindexos
1条回答
网友
1楼 · 发布于 2024-04-27 00:55:43

见下面的评论

import numpy as np
import pandas as pd
import os 
import glob 


os.chdir('C:/Users/george/Desktop/testing/output/test')

for filename in os.listdir('C:/Users/george/Desktop/testing/output/test'):
    data = pd.read_csv(filename,skiprows=[0])
    table = pd.pivot_table(data, values='SCADAVALUE',columns=['DUID'],index='SETTLEMENTDATE', aggfunc=np.sum)
    table.to_csv(filename+'pivoted.csv')


my_csv_files = []  # what is this variable for?
for file in os.listdir("C:/Users/george/Desktop/testing/output/test"):
    if file.endswith("*pivoted.csv"):

        # At this point you are not reading the file, but you should.  
        # The 'table' variable is still making reference to the the last iteration
        # of the 'for' loop a few lines above

        # However, better than re-reading the file, you can remove 
        # the second 'for file in...' loop,
        # and just merge the code with the first loop

        table.set_index(table.columns[0])
        table.index = pd.to_datetime(table.index) 
        table_resampled = table.resample('30min',closed='right',label='right').mean() 
        table_resampled = table_resampled.reset_index() 
        table.to_csv(filename+'30min.csv')

相关问题 更多 >