python – pandas – 使用外连接的DataFrame扩展
发布时间:2020-12-20 13:44:11 所属栏目:Python 来源:网络整理
导读:首先,我是大熊猫的新手,我正在努力倾斜如此彻底的答案将不胜感激. 我想生成一个表示map witter标签suboken的pandas DataFrame – 标签suboken意味着集合{hashtagA} U {i |我在分组(‘_’,hashtagA)}中从表匹配海报 – 鸣叫 例如: In [1]: df = pd.DataFrame
首先,我是大熊猫的新手,我正在努力倾斜如此彻底的答案将不胜感激.
我想生成一个表示map witter标签suboken的pandas DataFrame – >标签suboken意味着集合{hashtagA} U {i |我在分组(‘_’,hashtagA)}中从表匹配海报 – >鸣叫 例如: In [1]: df = pd.DataFrame([["jim","i was like #yolo_omg to her"],["jack","You are so #yes_omg #best_place_ever"],["neil","Yo #rofl_so_funny"]]) In [2]: df Out[2]: 0 1 0 jim i was like #yolo_omg to her 1 jack You are so #yes_omg #best_place_ever 2 neil Yo #rofl_so_funny 从那以后我想得到类似的东西 0 1 0 jim yolo_omg 1 jim yolo 2 jim omg 3 jack yes_omg 4 jack yes 5 jack omg 6 jack best_place_ever 7 jack best 8 jack place 9 jack ever 10 neil rofl_so_funny 11 neil rofl 12 neil so 13 neil funny 我设法构建了这种实际上完成工作的琐事: In [143]: df[1].str.findall('#([^s]+)') .apply(pd.Series).stack() .apply(lambda s: [s] + s.split('_') if '_' in s else [s]) .apply(pd.Series).stack().to_frame().reset_index(level=0) .join(df,on='level_0',how='right',lsuffix='_l')[['0','0_l']] Out[143]: 0 0_l 0 0 jim yolo_omg 1 jim yolo 2 jim omg 0 jack yes_omg 1 jack yes 2 jack omg 1 0 jack best_place_ever 1 jack best 2 jack place 3 jack ever 0 0 neil rofl_so_funny 1 neil rofl 2 neil so 3 neil funny 但我有一种非常强烈的感觉,即有更好的方法可以做到这一点,特别是考虑到真正的数据集是巨大的. 解决方法
大熊猫确实具有本地做这个功能.
Series.str.findall() 这基本上适用于正则表达式并捕获您在其中指定的组. 所以如果我有你的数据帧: df = pd.DataFrame([["jim","Yo #rofl_so_funny"]]) 我要做的是首先设置列的名称,如下所示: df.columns = ['user','tweet'] 或者在创建数据帧时执行此操作: df = pd.DataFrame([["jim","Yo #rofl_so_funny"]],columns=['user','tweet']) 然后我会简单地使用正则表达式应用提取函数: df['tag'] = df["tweet"].str.findall("(#[^ ]*)") 我会使用负面角色群而不是积极角色群,这更有可能在特殊情况下存活下来. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |