栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

[Pandas技巧] 多值列拆分成多行

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[Pandas技巧] 多值列拆分成多行

美图欣赏2022/06/16

import pandas as pd

df = pd.DataFrame([['A123','82-0382-07'],
                   ['B437','83-0382-05,84-0393-06'],
                   ['C110','83-0382-05,83-0393-05,85-0022-01']
                  ],columns = ['Material','Product_number'])

# Product_number列(多值列)拆分成多行
df = df.drop(['Product_number'], axis=1).join(df['Product_number'].str.split(',', expand=True).stack().reset_index(level=1, drop=True).rename('Product_number'))

df

处理后的df

针对下述公式进行拆分步骤具体讲解

df = df.drop(['Product_number'], axis=1).join(df['Product_number'].str.split(',', expand=True).stack().reset_index(level=1, drop=True).rename('Product_number'))

【1】.drop()

res1 = df.drop(['Product_number'], axis=1)

【2】.str.split()

# 不加参数expand = True,split()会返回拆分后的字符串数组
res2 = df['Product_number'].str.split(',')

# 加参数expand = True,会将数组拆开,数组中的每一个元素都会单独保存
res3 = df['Product_number'].str.split(',', expand=True)

【3】.stack()

# stack()将数据的列columns旋转成行index
res4 = df['Product_number'].str.split(',', expand=True).stack()

【4】.reset_index(level=1, drop =True)

# reset_index(level=1, drop =True)
res5 = df['Product_number'].str.split(',', expand=True).stack().reset_index(level=1, drop=True)

【5】.rename()

# rename()
res6 = df['Product_number'].str.split(',', expand=True).stack().reset_index(level=1, drop=True).rename('Product_number')

【6】.join()

# join()
res7 = df.drop(['Product_number'], axis=1).join(df['Product_number'].str.split(',', expand=True).stack().reset_index(level=1, drop=True).rename('Product_number'))
# 相当于res1.join(res6)
res8 = res1.join(res6)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/976583.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号