pandas 将一行拆分为多行,将多行合并为一行
创始人
2024-03-12 20:41:00
0

需求描述

  • 在今天的数据需求,现在要统计各个场景下的类目种类数,并列出对应都有哪些类目。
  •  现在面临的问题是:每个客户的应用场景不同,购买的类目也有多种。

🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞🎞

数据形式

数据处理前:

 最终统计的结果:

拆开来看,分两大块一部分是统计最适场景的类目数、一部分是统计最适场景的类目组合 

解决思路:

1、首先将原始数据中用到的列提取出来,一行拆分为多行

2、对原始数据进行去重处理,得到最新的数据

  • 统计最适场景的类目数

       使用pandas中的pivot_table()。

  • 统计最适场景的类目组合

        将各个场景下的,类目进行拼接。

具体实现代码:

1、首先将原始数据中用到的列提取出来,一行拆分为多行

data2_1 =data2[['类目','最适场景']]
data2_1['类目1'] = data2_1['类目']
data2_1 = data2_1.drop(['类目1'], axis=1).join(data2_1['类目1'].str.split(',', expand=True).stack().reset_index(level=1, drop=True).rename('类目_new'))
print(data2_1.head())

2、便于后面的统计,对原始数据进行去重处理,得到最新的数据

data2_1 =data2_1[['最适场景','类目_new']]
data2_1.drop_duplicates(inplace =True) #对数据进行去重
  • 统计最适场景的类目数

kind_1 =pd.pivot_table(data2_1,values =['类目_new'],index =['最适场景'],aggfunc ={ '类目_new':lambda x :len(x.dropna().unique())},fill_value =0).reset_index(drop=False).rename(columns ={'类目_new':'类目数'})
print(kind_1.head())

  • 统计最适场景的类目组合
# 创建函数,用于聚合场景购买品类的集合
def fun_join(x):return ','.join(x.values)kind_2 =data2_1.groupby(by = '最适场景').agg(fun_join).reset_index().rename(columns ={'类目_new':'类目组合'}) #获得最近一次购买产品的组合kind =pd.merge(kind_1,kind_2,on =['最适场景'],how ='inner')
print(kind.head())

 至此,已经完成了这个数据需求。

总结一下:

在这个数据需求里面最重要的两点,一个是数据的拆分;一个是数据的合并。

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...