我的数据帧是这样的
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']
我想提取演员列表列中最常见的名字。我找到了这个密码。你有更好的建议吗?尤其是大数据。你知道吗
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
根据我的测试,在计数之后进行regex清理要快得多。你知道吗
我将使用
ast
将列表转换为list
使用普通python总比依赖pandas好,因为如果列表很大,它会消耗大量内存。你知道吗
如果列表的大小为1000,那么在使用
expand = True
时,非1000长度的列表将具有Nan,这是对内存的浪费。试试这个。你知道吗相关问题 更多 >
编程相关推荐