2016-10-05 16 views
5

ilk 10 öğelerini almak:Pandalar aşağıdaki gibidir: Bir sütun <code>tfidf_sorted</code> ile bir veri çerçevesi sahip bir dizi

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) döner pandas.core.series.Series. aşağıdaki gibi

Bu sütun oluşturuldu: tfidf bir sözlük olduğunu

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

.

İlk 10 anahtar/değer çiftini tfidf_sorted'dan nasıl edinebilirim?

+0

. Listeleri neden bir dizide saklarsınız? Neden bir DataFrame'de sütun kullanmıyorsunuz? – Maximilian

+0

Elbette, ben de öyle düşündüm. Alternatif bir yöntem önerebilir misiniz? –

+0

Bir DataFrame'deki gerçek bir kolondaki bu sütunların her biri (yani ilk 'morrell', 'melatonin' vb.)? – Maximilian

cevap

2

kullanabilirsiniz 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]) 

Veya satır başına en iyi 10 gerekirse [:10] ekleyin: pandaların kullanmanın çok unidiomatic yol var

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

olduğu bir başka sütuntan 'tfidf' yaratılmıştır. İkinci cevap işe yaradı. Bir kütüphaneyi içe aktarmam gerekiyor mu? –

+0

Evet, cevap vermek için ekledim.Ama ilk cevap tüm satırlardaki tüm değerlerin ilk 10'unu döndürüyor – jezrael

+0

Teşekkürler: İkinci cevap benim aradığım şey. –

İlgili konular