2017-05-19 3 views
1

중첩 된 mongodb 결과를 판다 데이터 프레임으로 가져옵니다.Python Pandas는 MongoDB를 중첩했습니다.

데이터는 다음과 같습니다.

{ 
"_id" : ObjectId("5911b9cebb56c016794d45a4"), 
"crawlat" : "2017-05-09 14:45", 
"traffic" : [ 
    { 
     "timestamp" : "1494338401", 
     "organic" : 53 
    }, 
    { 
     "timestamp" : "1494342001", 
     "organic" : 64 
    }, 
    { 
     "timestamp" : "1494345601", 
     "organic" : 74 
    }, 
    { 
     "timestamp" : "1494349201", 
     "organic" : 78 
    }, 
    { 
     "timestamp" : "1494352801", 
     "organic" : 80 
    }, 
    { 
     "timestamp" : "1494356401", 
     "organic" : 88 
    }, 
    { 
     "timestamp" : "1494360001", 
     "organic" : 91 
    }, 
    { 
     "timestamp" : "1494363601", 
     "organic" : 92 
    }, 
    { 
     "timestamp" : "1494367201", 
     "organic" : 94 
    } 
] 

}는

트래픽 어레이는 모든 결과에 대한 엔트리 (48)를 포함한다.

"유기"의 값에 관심이있는 점은 배열 순서대로 정렬됩니다.

나는 좀 정리 사용 json_normalize 및

dfsitemap = dfsitemap['traffic'].apply(pd.Series) 

지금 결과가이

enter image description here

처럼 않았다

con = pymongo.MongoClient(['...:27017']) 
collsitemap = con.sitemap.newssitemap 
sitemapsdata = collsitemap.find({'traffic':{'$size':48}}) 

로 시작하지만 난 그냥있는 테이블이 필요 유기적 가치. 이걸 어떻게 청소할 수 있니?

+0

두 차원은 무엇인가 귀하의 데이터 프레임? – oLas

답변

1

포함하거나 제외 할 수는 열을 지정할 수 있습니다 from_records 생성자와 데이터 프레임을 만들 수 있습니다

pd.DataFrame.from_records(sitemapsdata['traffic'], exclude=['timestamp']) 

주는 :

image

+0

감사합니다. 오류가 발생합니다. TypeError : 인수 'rows'에 잘못된 유형이 있습니다 (예상 목록, 시리즈 있음) 위에서 볼 수 있듯이 트래픽은 배열입니다. – Tobi

+0

죄송합니다. 오타가 있습니다. 'from_records'에 대한 인수는 dicts의 목록입니다 (귀하의 경우에는'traffic'의 값). 답변을 업데이트했습니다. – oLas

+0

이제 알겠습니다. TypeError : 인덱스 'traffic'을 커서 인스턴스에 적용 할 수 없습니다. find는 여러 행을 반환합니다. – Tobi

관련 문제