2017-11-28 11 views
0

여기에있는 목표는 많은 CSV 파일을 읽고 각각을 별도의 판다 데이터 프레임으로 읽는 것입니다. "="앞에 다음 세 줄의 세 번째 줄이 잘못되었습니다. 동적 변수가 아닌 사전을 사용하는 것에 대한 많은 게시물을 읽었지 만 여기에 적용하는 방법을 알 수 없습니다. globals()와는 다른 대안이 있는데, 거기에는 많은 논쟁이있는 것처럼 보입니다. dataframes는 다른 행의 수 있습니다변수를 동적으로 할당하는 대신 사전을 실제로 사용할 수 있습니까?

dfA = pandas.read_csv('A.csv') 

그래서 나는 mutidimensional 배열 또는 생각하지 않습니다 길이 :

testlist = ['A', 'B', 'C'] 
for dfsuffix in testlist: 
    'df' + dfsuffix = pandas.read_csv(dfsuffix + '.csv') 

따라서, 예를 들어, 내가 첫 번째 반복을 찾고은 다음과 같이 해석한다 다중 인덱스 데이터 프레임이 이상적입니다. 그들은 같은 열을 가지고 있지만 나는 그것들을 추가하고 싶지 않습니다.

NB. 테스트 목록의 내용이 사용자 입력으로 채워진 날짜 목록이 될 것임을 미리 알지 못한다고 덧붙여 야합니다.

+4

3 개의 변수를 만드는 대신 3 개의 항목이있는 사전을 하나 만듭니다. 단순한. –

+0

여기에 사전이 보이지 않습니다. – user1767754

+4

예, 사전을 사용할 수 있습니다. 'df [dfsuffix] = pandas.read_csv (dfsuffix + ".csv")'는 df [ "A"]'를 사용하여 데이터 프레임을 참조 할 수있게합니다. –

답변

2

사전은 변수 이름을 동적으로 생성하는 데있어 선호되는 솔루션입니다. 그것은이 코드 다르지 않다

df = {} 
testlist = ['A', 'B', 'C'] 
for dfsuffix in testlist: 
    df[dfsuffix] = pandas.read_csv(dfsuffix + '.csv') 

:

이 코드를 고려

df = { 
    'A': pandas.read_csv('A.csv'), 
    'B': pandas.read_csv('B.csv'), 
    'C': pandas.read_csv('C.csv') 
} 

다음 두 명령문은 기능적으로 동일하다 :

dfA = pandas.read_csv('A.csv') 
df["A"] = pandas.read_csv('A.csv') 

유일한 차이가 있다는 것입니다 사전은 루프에서 사용하기가 더 쉽습니다. 저장된 데이터는 동일합니다.

+1

dfsuffix : 테스트 목록의 dfsuffix에 대한 df = {dfsuffix : pandas.read_csv (dfsuffix + '.csv')} ... ... btw - 위대한 tkinter의 전설이 팬더를 건너는 것을 볼 수 있습니다! – Parfait

+2

@Parfait 나는 "pandas"로 넘어 가지 않습니다 - 이것은 판다 (pandas) 질문이 아니며 단지 기본적인 python입니다. 나는 팬더를 사용한 적이 없다. –