2017-12-27 4 views
0

나는 변경하고자하는 전체 csv 파일 세트가있는 디렉토리가 있습니다. 각 csv에는 날짜가있는 행이 있습니다. 파일의 길이에서 1까지 카운트하는 열을 추가하고 싶습니다 (파일의 마지막 날짜는 해당 열에 1의 값을 갖습니다.디렉토리의 개별 파일을 어떻게 변경합니까?

>import os 
>import pandas as pd 

>for f in os.listdir(path): 

> df = pd.read_csv(f) 

> df['Countdown'] = range(len(df), 1, -1) 

을이 디렉토리에있는 데이터 파일의 특정 이름을주기 때문에 이것은 나에게 이상한

FileNotFoundError: File b'Data.csv' does not exist

의 오류를 제공하므로 :

나는 다음과 같은 시도 오류 메시지에서 이름을 사용하고있는 그대로 파일을 명확하게 볼 수 있습니다.

glob을 사용해 보았습니다.

>import glob 

>data_set = glob.glob(path) 

>for f in data_set: 

> df = pd.read_csv(f) 

> df['Countdown'] = range(len(df), 1, -1) 

가 말한대로이 작동하지 않습니다 : 나는 그것을 더 많은 파일을 추가로 dataframe의 길이가 지속적으로 증가하고있다으로

ValueError: Length of values does not match length of index

이 오류는 나에게 의미가 있습니다, 그래서 '렌 (df) '인수가 변경되어 인덱스와 일치하지 않습니다.

저는 할 일이 너무 독특하지 않다는 것을 확신합니다.이 작업을 수행하는 가장 좋은 방법을 찾는 데 어려움을 겪고 있습니다. 다시 말하지만, 각 파일에는 데이터 프레임의 길이와 가장 최근의 날짜 값이 1 인 가장 빠른 날짜부터 계산되는 열이 있습니다.

감사합니다. 당신을 도와주세요.

+0

'의 DF ['새로운 '] = np.arange (LEN (DF), 0, -1)'? – MaxU

답변

0

이 시도 :

for f in glob.glob(r'/path/to/dir/*.csv'): 
    df = pd.read_csv(f) 
    df['Countdown'] = np.arange(len(df), 0, -1) 
    # process df... 
+0

이것은 정확하게 카운트 다운을하지만, 모든 것을 함께 묶어주기 때문에 각 파일에서 개별적으로 수행하지는 않습니다. 모든 파일을 하나의 데이터 프레임으로 결합한 다음 한 번 카운트 다운합니다. 각 파일에 대한 카운트 다운이 필요합니다. 20 개의 파일이 있다면 20 번 카운트 다운해야합니다. –

관련 문제