实现多话题拆分表格重组

一行拆分为多行

假设原始数据名为df

有四个字段,分别是:品牌,话题,互动量,声量

需求:一条里面有多个话题,需要按照|拆分成多行单个话题

image-20210818171342195

思路如下:

  1. list_topic记录所有出现过的话题,用list_repeat记录原来每一行中的话题个数,即每一行需要重复的次数
for x in df['话题']:
    list_topic.extend(x.split('|'))
    list_repeat.append(len(x.split('|')))
  1. 然后用df.value.repeat函数和list_repeat实现对df的定位重复
df_new = pd.DataFrame(df.values.repeat(list_repeat, axis=0), columns=['品牌', '话题', '声量', '总互动量'])
  1. 更改【话题】列
df_new['话题'] = list_topic

关于以上的问题,一开始想到的方法是:对每一条话题拆分之后循环,在其中创建几条新的数据之后,concat或者append到一个总表里,当数据量很大时这个方法效率非常低。使用df.value.repeat,将数据变为np.array之后再按照一定规则(list_repeat)复制,可以大大提高效率

新方法 2022-07-12

image-20220712160824413

代码如下:

import pandas as pd
import numpy as np

df = pd.DataFrame(
    {
        '品牌': ['小米', '小米'],
        '话题': ['雷军|mix4|屏下摄像头', '情怀|钉子户|演讲'],
        '声量': [22, 75],
        '互动量': [33, 22]
    }
)

df['话题'] = df['话题'].map(lambda x: x.split('|'))  # 这里根据分隔符动态修改
df = df.explode('话题')

df.index = [i for i in range(len(df))]
print(df)

参考:https://zhuanlan.zhihu.com/p/124242604

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值