나는 여러 하위 디렉토리 (더 많은 폴더)가 있고 각 하위 디렉토리에는 csv 파일이 있습니다. 하위 디렉토리의 모든 CSV 파일에 동일한 코드를 적용하고 싶습니다. 난 그냥 하나 개의 폴더에 대한 이런 짓을하면 내가 이런 식으로 할 것 :이 경우 G:\Stefano\Ecoregion_assessment\csv_by_ecoregion_crp
에여러 폴더에있는 여러 파일에 동일한 코드 적용
list1=[]
pth=r'G:\Stefano\Ecoregion_assessment\csv_by_ecoregion_crp\05f08_46e'
for f in os.listdir(pth):
out=r'G:\Stefano\Ecoregion_assessment\final_files'
df=pd.read_csv(os.path.join(pth,f))
columns=['Percent', 'Land_Use', 'LC_Source']
df=df[columns]
df['Land_Use2']=df.Land_Use
df.rename(columns={'Percent': 'Percent_' +df.iloc[1,2], 'Land_Use': 'Land_Use_' +df.iloc[1,2]} , inplace=True)
df.drop(['LC_Source'], inplace=True, axis=1)
list1.append(df)
df_final = reduce(lambda left,right: pd.merge(left,right,on=['Land_Use2'], how='outer'), list1)
df_final.to_csv(os.path.join(out,'05f08_46e.csv'))
모든 서브 디렉토리로 이동하고 05f08_46e
서브 디렉토리 중 하나 인 루트입니다. 이 동일한 코드를 함수를 사용하여 루트 내의 모든 폴더에 적용한 후 파일을 out
으로 보내고 반복되는 특정 하위 디렉터리의 이름을 보내려고합니다. G:\Stefano\Ecoregion_assessment\csv_by_ecoregion_crp
내에 20 개의 폴더가 있으므로 끝에 20 개의 출력 파일을 G:\Stefano\Ecoregion_assessment\final_files
에 넣고 싶습니다. 나는 폴더 경로를 수동으로 변경하지 않고 모든 20 개의 폴더에 작성한 코드를 적용하기 만하면됩니다.
이 방법에 접근하는 또 다른 방법은 os.walk
을 사용하는 것이지만 아직 성공하지 못했습니다.