【发布时间】:2018-12-12 05:08:26
【问题描述】:
我的数据框是这样的
star_rating actors_list
0 9.3 [u'Tim Robbins', u'Morgan Freeman']
1 9.2 [u'Marlon Brando', u'Al Pacino', u'James Caan']
2 9.1 [u'Al Pacino', u'Robert De Niro']
3 9.0 [u'Christian Bale', u'Heath Ledger']
4 8.9 [u'John Travolta', u'Uma Thurman']
我想提取actors_list 列中出现频率最高的名字。我找到了这段代码。你有更好的建议吗?尤其是对于大数据。
import pandas as pd
df= pd.read_table (r'https://raw.githubusercontent.com/justmarkham/pandas-videos/master/data/imdb_1000.csv',sep=',')
df.actors_list.str.replace("(u\'|[\[\]]|\')",'').str.lower().str.split(',',expand=True).stack().value_counts()
(this data) 的预期输出
robert de niro 13
tom hanks 12
clint eastwood 11
johnny depp 10
al pacino 10
james stewart 9
【问题讨论】:
-
提供预期的输出。
-
使用 for 循环总是比把繁重的工作交给 pandas 本身要好。
-
@coldspeed 我不认为这是取消嵌套的骗局。
-
如果你的列表很大,那么
expand=True会杀死你的系统。 -
@Dark 没有
expand=True.stack()不起作用
标签: python python-3.x pandas dataframe