2012-04-12 3 views
4

팬더 데이터 프레임을 사용하여 일부 시장 데이터를 추적하고 싶습니다. 거래 당일 라이브로 다운로드 할 예정입니다.새 값을 삽입하는 가장 좋은 방법

AAPL과 GOOG의 가격을 기록하고 싶다고 가정 해 봅시다. 나는 dataframe를 작성하여 시작합니다

prices = DataFrame(columns = ['AAPL', 'GOOG']) 

이의 첫 번째 데이터 포인트는 시간 T1에 오면 말하고 AAPL을위한 555.0 가격을 보자. 그리고 몇 초 후 t2에서 430.0의 가격이 GOOG에 제공됩니다. 물론

하나는 수행 할 수 없습니다

prices['AAPL'][t1] = 555.0 
prices['GOOG'][t2] = 430.0 

, 그것을 수정, 인덱스를 당기는 dataframe를 인덱스하는 다음 각 스칼라 가격 등을 삽입 외에이 생각을 달성하기 팬더의 쉬운/빠른 방법이 있나요 그것은 들어온다?

답변

3

set_value 메서드 (크기가 변경된 경우 새 객체에 대한 참조를 반환 함)를 확인하십시오. 하지만 (중첩 딕셔너리에 비해) 빨리 기대하지 않는다 :

In [7]: prices 
Out[7]: 
Empty DataFrame 
Columns: array([AAPL, GOOG], dtype=object) 
Index: array([], dtype=object) 

In [8]: prices = prices.set_value(t1, 'AAPL', 5) 

In [9]: prices 
Out[9]: 
          AAPL GOOG 
2012-04-12 18:02:28.178331  5 NaN 
이보다 효율적으로 마지막에 데이터를 접착하여 DataFrame 크기를 조정에 대한 몇 가지 점에서 방법을 추가하는 것이 좋을 것이다

(NumPy와를 이것을위한 시설이있다).

+0

감사합니다. 당신이 중첩 된 dict을 만들고 나서 어떤 시점에서 데이터 프레임으로 변환한다고 말했을 때, 속도가 문제가된다고 생각합니다. – geronimo

관련 문제