2013-06-08 2 views
5

모든 주식의 마감 가격만을 포함하는 단일 데이터 프레임에 맞추려는 주가가있는 여러 데이터 프레임이 있습니다.여러 개의 정렬되지 않은 데이터 프레임을 단일 팬다 데이터 프레임에 병합

해당 날짜의 주식에 대해 가까운 가격이없는 경우에 대비하여 모든 데이터 프레임의 모든 날짜가 날짜 - 열 (색인) 및 "NA"에 표시 될 것으로 기대합니다.

두 개의 데이터 프레임 (DF1 및 DF2)와

예 :

In [9]: frame 
Out[9]: 
      df1.Close df2.Close 
Date1 
2012-01-01  22.30  22.30 
2012-01-02  NaN  21.24 
2012-01-03  21.24  NaN 
2012-01-04  22.16  22.16 
2012-01-05  24.04  NaN 
2012-01-06  NaN  24.04 
2012-01-07  NaN  21.04 

어떻게 것이다 : 나는

In [8]: frame=pd.DataFrame({"df1.Close":df1["Close"], "df2.Close":df2["Close"]}) 

하고 결과를 할 수있는 지금

In [5]: df1 
Out[5]: 
      Open High Low Close 
Date1 
2012-01-05 22.00 22.66 23.11 24.04 
2012-01-04 24.04 23.80 23.08 22.16 
2012-01-03 22.16 21.27 20.42 21.24 
2012-01-01 21.24 22.30 22.52 22.30 

In [7]: df2 
Out[7]: 
      Open High Low Close 
Date1 
2012-01-07 23.00 21.66 25.11 21.04 
2012-01-06 22.00 22.66 23.11 24.04 
2012-01-04 24.04 23.80 23.08 22.16 
2012-01-02 22.16 21.27 20.42 21.24 
2012-01-01 21.24 22.30 22.52 22.30 

예상대로입니다 동적 인 데이터 프레임 수에 대해 동일한 작업을 수행하도록 코드를 변경해야합니까? 지금 당장이 방법으로 정렬해야하는 8 개의 데이터 프레임이 있습니다. 수동으로 데이터 프레임 이름을 연결하는 대신에 (df [0]과 같은 것을 비 유적으로 말하면서) 데이터 프레임 목록을 반복하여 위와 같이 정렬 할 수있는 방법이 있습니까?

미리 감사드립니다. 더크

답변

4

당신은 목록에서 데이터 프레임 (실제 데이터 프레임의 객체가, 내가, 아니 자신의 이름을 의미)이 이런 식으로 뭔가 보이는 경우 :

dflist = [df1, df2, df3, df4, df5, df6, df7, df8] 

다음 코드가해야을 당신이 찾고있는 것 같다 무엇 :

frame = {} 
for idx, df in enumerate(dflist): 
    n = idx+1 # Since lists are 0-indexed 
    name = "df{0:d}.Close".format(n) 
    close = df["Close"] 
    frame[name] = close 

당신은 DICT 이해와 더 컴팩트하게이 작업을 수행 할 수 있지만, 예제 코드에서 나는 이해의 용이성을 위해 더 명시 적으로 물건을 주문하는 것을 선호합니다. 참고로, dict 이해는 다음과 같이 보일 것입니다.

{"df{0:d}.Close".format(idx+1): df["Close"] for idx, df in enumerate(dflist)} 
+0

매우 감사합니다. 그 예를 들자면 나는 그 반쪽에있다. 이제 나는 어떻게 그 "dflist"다이내믹을 만들까요? 얼마나 많은 데이터 프레임이 필요한지 미리 알 수 없으므로 여러 데이터 프레임을 동적으로 만들고 코드를 사용하는 방법을 찾고 있습니다. 도와 줘서 고마워! – user1653205

+0

'append()'와 같은 표준리스트 조작 메소드 만 사용하십시오. 예를 들어 새로운 데이터 프레임을 얻었을 때,'dflist.append (new_df)'와 같은 일을하십시오. – rmunn

+0

나는 점점 가까워지고 있다고 생각한다. 이제는 키 프레임이 주식의 시세표 인 DICK에 데이터 프레임을로드하고 값은 주식에 대한 OHLC 따옴표가있는 데이터 프레임입니다. 이제 8 개의 키/값 쌍으로 된 사전을 가지고 있습니다. 나머지 질문은 : 어떻게하면 내 사전을 반복하여 데이터 프레임을 하나의 데이터 프레임에 결합시킬 수 있습니까? – user1653205

관련 문제