2016-10-05 7 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

パンダを使用して、非常に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

ありがとうございました。二番目の答えは私が探していたものです。 –

関連する問題