2017-12-18 15 views
0

다음과 같은 상황이 있습니다 : 'a'와 'b'키를 포함한 여러 사전을 포함하는 사전으로 구성된 '수정'열이있는 데이터 프레임이 있습니다. 개정판은 키 열 id에 속합니다. 내가하려고했던 것은 dict 형식을 제거하는 것입니다. 따라서 모든 하위 사전에 해당 값을 데이터 프레임의 다른 열과 함께 나열하려고했습니다. 새로운 열은 다음 키의 이름 ('A'와 'B')를 채택해야pd.concat을 사용하면 데이터 프레임 열이 없어집니다.

초기 Dataframe이

:

id column2 (dict_column)        column3 
0 {{'a': 91125, 'b': 233}{'a': 955, 'b': 267}}  Marc 
1 {{'a': 91875, 'b': 455}{'a': 115, 'b': 267}}  Robert 
2 {{'a': 91955, 'b': 354}{'a': 255, 'b': 267}}  George 
3 {{'a': 91565, 'b': 987}}       Peter 
4 {{'a': 95925, 'b': 896}}       Hans 

내 목적 : 이제

id a  b  column3 
0 91125 233  Marc 
0 955 267  Marc 
1 91875 455  Robert 
1 115 267  Robert 
2 91955 354  George 
2 255 267  George 
3 91565 987  Peter 
4 95925 896  Hans 

가, 내가 검색 그 방법은 pd.concat을 사용하여 solution을 찾았습니다.

df = pd.concat([pd.DataFrame(x) for x in df['column2']],keys=df['id']).reset_index(level=1, drop=True).reset_index() 

지금 내 문제'열 3'는 길을 잃기 때문이다 있으며 다음 dataframe 반환

id a  b 
0 91125 233  
0 955 267  
1 91875 455  
1 115 267  
2 91955 354  
2 255 267  
3 91565 987  
4 95925 896   ´ 

너희들이 내가 잘못 무슨 생각을 가지고 있습니까를? 사전

많은 감사,

Greetz

답변

0

당신은 데이터 프레임에 시리즈 2 열을 확대하고 안양에 데이터 프레임을 재 할당된다. pd.concat 내부에서 진행되는 모든 작업에는 column3이 포함되지 않습니다. 따라서이 결과를 df에 재 할당하면 column3을 잃게됩니다. 이 문제를 해결하는 방법을 아는 가장 좋은 방법은 column2의 확장을 새 변수에 할당 한 다음 병합을 df로 되돌려 보내는 것입니다.

s = pd.concat([pd.DataFrame(x) for x in df['column2']],keys=df['id']).reset_index(level=1, drop=True).reset_index() 
new_df = s.merge(df[['id','column3']],on='id')