【问题标题】:Pandas: get first 10 elements of a seriesPandas:获取系列的前 10 个元素
【发布时间】:2017-02-13 11:46:59
【问题描述】:

我有一个包含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 个键值对?

【问题讨论】:

  • 这是使用 pandas 的一种非常单一的方式。为什么要在系列中存储列表?为什么不在 DataFrame 中使用列?
  • 当然,我也这么认为。你能建议一种替代方法吗?
  • DataFrame 的实际列中的每一列(即第一列是“morrell”、“melatonin”等)?
  • 不,有一列tfidf_sorted,第一行是[(morrell, 45.9736796), (football, 25.58352014...
  • 对,我说这是一种非常尴尬的做法。相反,为什么不将其设置为四列?

标签: python list python-2.7 pandas indexing


【解决方案1】:

你可以使用的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])

【讨论】:

  • 谢谢!。第二个答案有效。对于第一个,我需要导入一个库吗?
  • 是的,我添加它来回答。但第一个答案返回所有行中所有值的前 10 个。
  • 谢谢。第二个答案是我一直在寻找的。​​span>
猜你喜欢
  • 2013-06-12
  • 2020-11-26
  • 2016-01-15
  • 1970-01-01
  • 2017-12-01
  • 1970-01-01
  • 2014-03-10
  • 2021-06-05
  • 1970-01-01
相关资源
最近更新 更多