2016-10-05 87 views
5

的前10個元素我有一個數據幀與柱tfidf_sorted如下:大熊貓:得到一系列

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

該柱創建如下:

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

tfidf哪裏是一個字典。

如何從tfidf_sorted獲得前10個鍵值對?

+0

這是用大熊貓的非常unidiomatic方式。爲什麼在一個系列中存儲列表?爲什麼不使用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]

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

謝謝!第二個答案有效。我需要導入一個庫? –

+0

是的,我將其添加回答,但首先回答所有行中返回所有值的前10位 – jezrael

+0

謝謝。第二個答案是我正在尋找的。 –