当前位置: 首页 > news >正文

pandas将dataframe列中的list转换为多列

在应用机器学习的过程中,很大一部分工作都是在做数据的处理,一个非常常见的场景就是将一个list序列的特征数据拆成多个单独的特征数据。

比如数据集如下所示:

data = [['John', '25', 'Male',[99,100,98]],['Emily', '22', 'Female',[97,99,98]],['Michael', '30', 'Male',[97,99,100]]]
df_data= pd.DataFrame(data,columns=['Name', 'Age', 'Gender','Score'])
df_data

在这里插入图片描述

很多场景是需要将类似于Score的list序列特征,拆成多个特征值如这里的语、数、外的分数。

下面通过几个实例来将dataframe列中的list序列转换为多列。

1、一维序列拆成多列

可以通过在列上应用Series来进行拆分。

df_score=df_data['Score'].apply(pd.Series).rename(columns={0:'English',1:'Math',2:'Chinese'})
df_score

在这里插入图片描述

可以看到将Score的数组,拆分成了English、Math、Chinese三个特征字段了

df_data=df_data.join(df_score)
df_data

在这里插入图片描述

2、二维序列拆成多列

用同样的思路也可以将二维序列的特征列拆成多列
如特征列是二维序列,序列里还有多个序列

data = [['John', '25', 'Male',[[99,100,98],[89,70]]],['Emily', '22', 'Female',[[97,99,98],[99,96]]],['Michael', '30', 'Male',[[97,99,100],[87,99]]]]
df_data= pd.DataFrame(data,columns=['Name', 'Age', 'Gender','Score'])
df_data

在这里插入图片描述

df_score=df_data['Score'].apply(pd.Series)
df_score_1=df_score[0].apply(pd.Series).rename(columns={0:'English',1:'Math',2:'Chinese'})
df_score_2=df_score[1].apply(pd.Series).rename(columns={0:'Biology',1:'Geography'})
df_score=df_score_1.join(df_score_2)
df_data=df_data.join(df_score_1).join(df_score_2)
df_data

在这里插入图片描述

另外一种情况就是序列里面只有一个序列的二维序列,数据如下所示:

data = [['John', '25', 'Male',[[99,100,98,89,70]]],['Emily', '22', 'Female',[[97,99,98,99,96]]],['Michael', '30', 'Male',[[97,99,100,87,99]]]]
df_data= pd.DataFrame(data,columns=['Name', 'Age', 'Gender','Score'])
df_data

在这里插入图片描述

这样也可以通过多次应用Series来进行拆分,也可以先explode()再应用Series来进行拆分。

df_score=df_data['Score'].apply(pd.Series)[0].apply(pd.Series).rename(columns={0:'English',1:'Math',2:'Chinese',3:'Biology',4:'Geography'})
df_score

在这里插入图片描述

df_score=df_data['Score'].explode().apply(pd.Series).rename(columns={0:'English',1:'Math',2:'Chinese',3:'Biology',4:'Geography'})
df_score

在这里插入图片描述

两者效果是一样的。


博客地址:http://xiejava.ishareread.com/

http://www.lryc.cn/news/268222.html

相关文章:

  • 小巧的Windows Memory Cleaner内存清理工具-释放内存,提升电脑的性能-供大家学习研究参考
  • STM32F072 CAN and USB
  • 卷积神经网络基础与补充
  • File Inclusion(Pikachu)
  • 【Redis刨析】知识图谱的构建与实现
  • html学习笔记 标题、段落、换行、列表、超链接、图片、表格
  • 汽车项目管理
  • Tg-5511cb: tcxo高稳定性+105℃高温
  • Linux 命令 ifconfig 全面解析!
  • 00-Git 应用
  • 安全运维是做什么的,主要工作内容是什么
  • nodejs+vue+ElementUi大学新生入学系统的设计与实现1hme0
  • Unity-序列化和反序列化
  • 如何将语音版大模型AI接入自己的项目里(语音ChatGPT)
  • 鸿蒙列表,item组件封装传参问题?@ObjectLink 和@Observerd
  • 信号与线性系统翻转课堂笔记12——时域取样定理
  • 爬虫工作量由小到大的思维转变---<Scrapy异常的存放小探讨>
  • 7.串口通信uart编写思路及自定义协议
  • 【物联网】光影之谜:RGB-LED传感器引领科技变革之路
  • promise的使用和实例方法
  • Visual Studio2022配置ReSharper C++ 常用设置
  • 论文解读类的公众号/知乎专栏,交给agent去做吧...
  • 【学习笔记】Java函数式编程03 Stream流-终结操作
  • 2024 Android保活总结
  • 迅为RK3568开发板Ubuntu上使用串口调试
  • 【http】HTTP/1.0、HTTP/1.1和HTTP/2.0
  • automkcert使用教程
  • tekton 发布 kubernetes 应用
  • unity脚本API中OnCollisionEnter()、OnTriggerEnter()二者的区别
  • 2023年12月【考试战报】|ORACLE OCP 19C考试通过