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

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

2000元阿里云代金券免费领取,2核4G云服务器仅664元/3年,新老用户都有优惠,立即抢购>>>


阿里云采购季(云主机223元/3年)活动入口:请点击进入>>>,


阿里云学生服务器(9.5元/月)购买入口:请点击进入>>>,

在应用机器学习的过程中,很大一部分工作都是在做数据的处理,一个非常常见的场景就是将一个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/

目录
相关文章
|
17天前
|
存储 数据采集 数据处理
深入探索Pandas的DataFrame:基本用法与案例研究
深入探索Pandas的DataFrame:基本用法与案例研究
|
17天前
|
BI 数据处理 索引
Pandas基本操作:Series和DataFrame(Python)
Pandas基本操作:Series和DataFrame(Python)
136 1
|
17天前
|
人工智能 数据处理 计算机视觉
Pandas数据处理——渐进式学习、DataFrame(函数检索-请使用Ctrl+F搜索)
Pandas数据处理——渐进式学习、DataFrame(函数检索-请使用Ctrl+F搜索)
83 0
|
13天前
|
数据可视化 数据挖掘 数据处理
进阶 pandas DataFrame:挖掘高级数据处理技巧
【5月更文挑战第19天】本文介绍了Pandas DataFrame的高级使用技巧,包括数据重塑(如`pivot`和`melt`)、字符串处理(如提取和替换)、日期时间处理(如解析和时间序列操作)、合并与连接(如`merge`和`concat`),以及使用`apply()`应用自定义函数。这些技巧能提升数据处理效率,适用于复杂数据分析任务。推荐进一步学习和探索Pandas的高级功能。
|
17天前
|
存储 JSON 数据处理
从JSON数据到Pandas DataFrame:如何解析出所需字段
从JSON数据到Pandas DataFrame:如何解析出所需字段
31 1
|
17天前
|
SQL 数据库 索引
Pandas之DataFrame,快速入门,迅速掌握(三)
Pandas之DataFrame,快速入门,迅速掌握(三)
|
17天前
|
数据采集 索引 Python
Pandas之DataFrame,快速入门,迅速掌握(二)
Pandas之DataFrame,快速入门,迅速掌握(二)
|
13天前
|
数据挖掘 数据处理 Python
【Python DataFrame 专栏】深入探索 pandas DataFrame:高级数据处理技巧
【5月更文挑战第19天】在 Python 数据分析中,pandas DataFrame 是核心工具。本文介绍了几个高级技巧:1) 横向合并 DataFrame;2) 数据分组与聚合;3) 处理缺失值;4) 数据重塑;5) 条件筛选;6) 使用函数处理数据。掌握这些技巧能提升数据处理效率和分析深度,助你更好地发掘数据价值。
【Python DataFrame 专栏】深入探索 pandas DataFrame:高级数据处理技巧
|
17天前
|
Python
使用Python pandas的sort_values()方法可按一个或多个列对DataFrame排序
【5月更文挑战第2天】使用Python pandas的sort_values()方法可按一个或多个列对DataFrame排序。示例代码展示了如何按'Name'和'Age'列排序 DataFrame。先按'Name'排序,再按'Age'排序。sort_values()的by参数接受列名列表,ascending参数控制排序顺序(默认升序),inplace参数决定是否直接修改原DataFrame。
32 1
|
17天前
|
NoSQL Serverless Python
在Python的Pandas中,可以通过直接赋值或使用apply函数在DataFrame添加新列。
【5月更文挑战第2天】在Python的Pandas中,可以通过直接赋值或使用apply函数在DataFrame添加新列。方法一是直接赋值,如`df['C'] = 0`,创建新列C并初始化为0。方法二是应用函数,例如定义`add_column`函数计算A列和B列之和,然后使用`df.apply(add_column, axis=1)`,使C列存储每行A、B列的和。
56 0
http://www.vxiaotou.com