2014-04-26 2 views
8

파이썬 dict의 같은 키를 사용하여 각각의 목록,팬더의 dataframe에 dicts의 목록을 변환

dict_keys= ['k1','k2','k3','k4','k5','k6'] # More like 30 keys in practice 
data = [] 
for i in range(20): # More like 3000 in practice 
    data.append({k: np.random.randint(100) for k in dict_keys}) 

이 있고의 부분 집합에 해당하는 팬더의 dataframe를 생성하는 데 사용하고 싶습니다 열쇠. 나의 현재의 접근 방식은 한 번에 목록 하나에서 각 dict을 가지고

df = pd.DataFrame(columns=['k1','k2','k5','k6']) 
for d in data: 
    df = df.append({k: d[k] for k in list(df.columns)}, ignore_index=True) 
    # In practice, there are some calculations on some of the values here 

를 사용하여 dataframe에 추가하는 것입니다 그러나 이것은 매우 느린 (실제 목록이며, 여기에 포함 된 dicts는 모두 아주이다 큰).

사전 목록을 반복하여 팬더 데이터 프레임에 행으로 추가하는 것이 더 빠르고 더 (관용적 인) 방법이 있습니까?

답변

12

DataFrame__init__ 또는 DataFrame.from_records에 전달하면됩니다 (작동 가능).

색인을 설정할 수도 있습니다. 예 : DataFrame.from_records(data, index = 'k1').

일부 계산도 수행해야하는 경우 DataFrame을 생성 한 후 대개 더 쉽고 편리합니다. 팬더 활용!

+1

와우, 'from_records'는 ​​* 빠릅니다 *! – orome

관련 문제