2016-10-05 1 views
5

제 10 개 요소를 얻을 :팬더 : 다음 I 열에 <code>tfidf_sorted</code>로 데이터 프레임을 일련의

tfidf_sorted 

0 [(morrell, 45.9736796), (football, 25.58352014... 
1 [(melatonin, 48.0010051405), (lewy, 27.5842077... 
2 [(blues, 36.5746634797), (harpdog, 20.58669641... 
3 [(lem, 35.1570832476), (rottensteiner, 30.8800... 
4 [(genka, 51.4667410433), (legendaarne, 30.8800... 

type(df.tfidf_sorted) 복귀 pandas.core.series.Series. 다음

이 열이 생성되었다 tfidf가 사전이다

df['tfidf_sorted'] = df['tfidf'].apply(lambda y: sorted(y.items(), key=lambda x: x[1], reverse=True)) 

.

tfidf_sorted에서 처음 10 개의 키 - 값 쌍을 얻으려면 어떻게해야합니까?

+0

을. 시리즈를 목록에 저장해야하는 이유는 무엇입니까? DataFrame에서 열을 사용하지 않는 이유는 무엇입니까? – Maximilian

+0

물론, 나도 그렇게 생각했다. 다른 방법을 제안 해 주시겠습니까? –

+0

DataFrame의 실제 열에서 각 열 (즉, 첫 번째 열은 'morrell', 'melatonin'등)은 무엇입니까? – Maximilian

답변

2

사용할 수 IIUC :

from itertools import chain 

#flat nested lists 
a = list(chain.from_iterable(df['tfidf_sorted'])) 
#sorting 
a.sort(key=lambda x: x[1], reverse=True) 
#get 10 top 
print (a[:10]) 

또는 행 당 10 필요한 경우 [:10]를 추가 : 팬더를 사용하는 매우 unidiomatic 방법이다

df['tfidf_sorted'] = df['tfidf'].apply(lambda y: (sorted(y.items(), key=lambda x: x[1], reverse=True))[:10]) 
+0

감사합니다! 두 번째 대답이 효과적입니다. –

+0

예, 답변에 추가합니다.하지만 먼저 모든 행의 모든 ​​값 중 상위 10 개를 반환합니다. – jezrael

+0

고마워요. 두 번째 대답은 내가 찾고있는 것입니다. –

관련 문제