У меня проблема с циклом в Python. Моя папка выглядит так:
|folder_initial
|--data_loop
|--example1
|--example2
|--example3
|--python_jupyter_notebook
Я бы хотел просмотреть все файлы в data_loop, открыть их, выполнить простую операцию, сохранить их под другим именем и затем сделать то же самое с последующим файлом. Я создал следующий код:
import pandas as pd
import numpy as np
import os
def scan_folder(parent):
# iterate over all the files in directory 'parent'
for file_name in os.listdir(parent):
if file_name.endswith(".csv"):
print(file_name)
df = pd.read_csv("RMB_IT.csv", low_memory=False, header=None, names=['column1','column2','column3','column4']
df = df[['column2','column4']
#Substitute ND with missing data
df = df.replace('ND,1',np.nan)
df = df.replace('ND,2',np.nan)
df = df.replace('ND,3',np.nan)
df = df.replace('ND,4',np.nan)
df = df.replace('ND,5',np.nan)
df = df.replace('ND,6',np.nan)
else:
current_path = "".join((parent, "/", file_name))
if os.path.isdir(current_path):
# if we're checking a sub-directory, recall this method
scan_folder(current_path)
scan_folder("./data_loop") # Insert parent direcotry's path
Я получаю ошибку:
FileNotFoundError
FileNotFoundError: File b'example2.csv' does not exist
Более того, я хотел бы запустить код без необходимости иметь записную книжку Jupyter в папке folder_initial, но я хотел бы иметь что-то вроде этого:
|scripts
|--Jupiter Notebook
|data
|---csv files
|--example1.csv
|--example2.csv
Есть идеи?
- Изменить:
Я создаю что-то вроде этого по предложению пользователя
import os
import glob
os.chdir('C:/Users/bedinan/Documents/python_scripts_v02/data_loop')
for file in list(glob.glob('*.csv')):
df = pd.read_csv(file, low_memory=False, header=None, names=[
df = df[[
#Substitute ND with missing data
df = df.replace('ND,1',np.nan)
df = df.replace('ND,2',np.nan)
df = df.replace('ND,3',np.nan)
df = df.replace('ND,4',np.nan)
df = df.replace('ND,5',np.nan)
df = df.replace('ND,6',np.nan)
df.to_pickle(file+"_v02"+".pkl")
f = pd.read_pickle('folder\\data_loop\\RMB_PT.csv_v02.pkl')
Но имя получающегося файла неправильно составлено, так как оно имеет внутри расширение -csv