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

时间:2019-02-04 04:09:47

标签: python pandas numpy

我有一个想要的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')

代码执行第一个循环,但第二个循环不起作用。为什么?我的代码有什么问题?

EDIT1:

image

1 个答案:

答案 0 :(得分:0)

请参阅下面的评论

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')