栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何将一列中的所有列表编译为一个唯一列表

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何将一列中的所有列表编译为一个唯一列表

导出

Series
到嵌套
lists
然后应用于
set
拼合列表的另一种解决方案:

df = pd.Dataframe({'id':['a','b', 'c'], 'val':[['val1','val2'],   ['val33','val9','val6'],   ['val2','val6','val7']]})print (df)  id       val0  a         [val1, val2]1  b  [val33, val9, val6]2  c   [val2, val6, val7]print (type(df.val.ix[0]))<class 'list'>print (df.val.tolist())[['val1', 'val2'], ['val33', 'val9', 'val6'], ['val2', 'val6', 'val7']]print (list(set([a for b in df.val.tolist() for a in b])))['val7', 'val1', 'val6', 'val33', 'val2', 'val9']

时间

df = pd.concat([df]*1000).reset_index(drop=True)In [307]: %timeit (df['val'].apply(pd.Series).stack().unique()).tolist()1 loop, best of 3: 410 ms per loopIn [355]: %timeit (pd.Series(sum(df.val.tolist(),[])).unique().tolist())10 loops, best of 3: 31.9 ms per loopIn [308]: %timeit np.unique(np.hstack(df.val)).tolist()100 loops, best of 3: 10.7 ms per loopIn [309]: %timeit (list(set([a for b in df.val.tolist() for a in b])))1000 loops, best of 3: 558 µs per loop

如果类型不是

list
,则
string
使用
str.strip
str.split

df = pd.Dataframe({'id':['a','b', 'c'], 'val':["[val1,val2]",   "[val33,val9,val6]",   "[val2,val6,val7]"]})print (df)  id     val0  a        [val1,val2]1  b  [val33,val9,val6]2  c   [val2,val6,val7]print (type(df.val.ix[0]))<class 'str'>print (df.val.str.strip('[]').str.split(','))0[val1, val2]1    [val33, val9, val6]2     [val2, val6, val7]Name: val, dtype: objectprint (list(set([a for b in df.val.str.strip('[]').str.split(',') for a in b])))['val7', 'val1', 'val6', 'val33', 'val2', 'val9']


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/641606.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号