2014-03-25 9 views
0

"악기 측정"으로 알려진 (사용자가 정의한) 객체 목록이 있습니다. 여기에는 Instrument_Measurement.name으로 액세스 할 수있는 제목과 Instrument_Measurement.data (모두 사용자 정의 된 방법)으로 액세스 할 수있는 일련의 데이터가 있습니다.알 수없는 시리즈 팬더에서 데이터 프레임 생성

이러한 "계측기 측정"개체는 list_instr_objects이라는 목록의 항목입니다. 항목 수 ("악기 측정치")가 변경되거나 하드 코딩 될 수 없습니다.

각각의 "계측기 측정"에 대해 열 제목이 Instrument_Measurement.name 인 데이터 프레임을 만들고 해당 계측기에 대해 해당 열의 데이터를 Instrument_Measurement.data으로 만들어야합니다. 나는 이러한 개체의 사전을 만들고 다음 Dataframe에 그 변환하여이 작업을 수행하기 위해 노력하고있어

:이 그래도 작동하지 않습니다

from collections import defaultdict 
testdict = defaultdict(list) 

for i in range(len(list_instr_objects)): 
    testdict[list_instr_objects[i].name].append(list_instr_objects[i].data) 

는 각 악기에 대한 첫 번째 데이터 항목은 유지 그리고 엔트리는 겉으로보기에 무작위 순서로 나온다. 나는 목록을 전달해야하는 사전에 Series를 전달하기 때문에 이것이라고 생각합니다. 그러나 어떻게 해야할지/어떻게 수정해야하는지 생각할 수 없습니다.

의견이 있으십니까?

미리 감사드립니다.

+1

열은 분명히 임의의 순서 (사전에는 주문이 없으므로)입니다. 문제가 있습니까? 다른 문제는 당신이 그것을리스트에 추가하기를 원하지 않는다는 것이다. 단지 그것을'testdict [list_instr_objects [i] .name] = list_instr_objects [i] .data'로 설정하기를 원한다. –

+0

불행히도 사전을 사용하고 목록에 추가하지 않으면 첫 번째 요소 만있는 것과 동일한 문제가 발생합니다. 불행히도 주문을 보존해야하므로 비 사전 기반 방법을 살펴볼 것입니다. 많은 감사합니다. – vbastrangledpython

답변

1

여러분은 OrderedDict를 사용하여 순서를 유지하고 아래의 코드를 사용하여 데이터 프레임을 생성 할 수 있다고 생각합니다.

import pandas as pd 
from collections import OrderedDict 

testdict = OrderedDict() 

for i in range(len(list_instr_objects)): 
    testdict[list_instr_objects[i].name] = (list_instr_objects[i].data) 

combined_data = pd.DataFrame(testdict) 
+0

완벽하게 작동합니다. 많은 감사합니다. – vbastrangledpython

관련 문제