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

使用pandas将字符串格式数据转换为单独的行

有时在处理数据时,可能会遇到这样的情况,即数据框中的整个字符串条目需要拆分到不同的行中。这可能是一项具有挑战性的任务,特别是当数据庞大而复杂时。尽管如此,一个名为pandas的Python库提供了各种函数,使用这些函数可以轻松有效地完成这项任务。因此,在本文中,我们将研究如何使用pandas中可用的方法(即split和explode)将字符串格式的字符串条目转换为单独的行。

什么是Pandas Data Frame?

pandas中的数据框是一个二维表格数据结构,带有标记的轴,称为行和列。数据框的一些属性包括:

  • 它可以是异构的,这意味着列可以具有任何数据类型。
  • 它可以被修改为n行和n列(可以添加更多行/列)
  • 每个数据框都定义了轴,即行和列

Pandas是一个开源Python库,广泛用于对数据科学领域的标签/表格数据或时间序列执行操作。它可以快速有效地操作和分析数据,这有助于在执行数据相关任务时提高生产力。

问题 有时我们有一个数据框,其中数据是一个或多个列中的字符串条目的形式,我们希望将该数据分隔到行中。

split和explode字符串

拆分和分解字符串条目是对数据帧执行的常见操作。当数据以字符串的形式存在时,这些操作非常有用,字符串之间由空格、逗号等分隔符分隔。

split

将单个字符串或条目根据指定的字符串或模式拆分为多个片段的过程称为拆分。当一个条目中有多个值,这些值由一个公共字符或序列(如空格、分号或逗号)分隔时,经常使用此选项。拆分是根据存在的分隔符将字符串条目划分为多个部分。

import pandas as pd

data = {'Names': ['Alice,Bob,Charlie', 'David,Eve', 'Frank']}
df = pd.DataFrame(data)
print(df)

输出

    Names
0    Alice,Bob,Charlie
1    David,Eve
2    Frank

拆分后

df[['Name1', 'Name2', 'Name3']] = df['Names'].str.split(',', expand=True)
print(df)

输出

               Names  Name1 Name2    Name3
0  Alice,Bob,Charlie  Alice   Bob  Charlie
1          David,Eve  David   Eve     None
2              Frank  Frank  None     None

explode

从具有列表或多个值的列中创建不同的行称为“分解”。pandas中的explode函数就是用来实现这一点的。它获取一个包含列表或数组的列,并在保留其他列中的值的同时,为这些列表中的每个元素生成一个新行。执行分解以将该划分的字符串分离到不同的行中。

import pandas as pd

# Create a list of names for each row
d = {'Names': [['Alice', 'Bob', 'Charlie'], ['David', 'Eve'], ['Frank']]}
df = pd.DataFrame(d)
print(df)

输出

                Names
0  [Alice, Bob, Charlie]
1           [David, Eve]
2                [Frank]

分解后

result = df.explode('Names')
print(result)

输出

     Names
0    Alice
0      Bob
0  Charlie
1    David
1      Eve
2    Frank

完整示例

#importing libraries
import pandas as pd

#making a dummy dataframe
df = pd.DataFrame({'id': [1, 2, 3], 'data': ['x, y', 'z, w', 'a']})
#printing dataframe
print(df)

输出

   id  data
0   1  x, y
1   2  z, w
2   3     a

将字符串条目拆分为列表

#split the data column on ', '
df['data'] = df['data'].str.split(', ')
#print dataframe
print(df)

输出

   id    data
0   1  [x, y]
1   2  [z, w]
2   3     [a]

将列表分解为单独的子列表

#using the explode method to split the dataframe into rows
df = df.explode('data')
#print final dataframe
print(df)

输出

   id data
0   1    x
0   1    y
1   2    z
1   2    w
2   3    a

总之,使用pandas库中的split和explode函数,可以将字符串条目形式的初始原始数据转换为单独的行,以便于数据操作。


http://www.kler.cn/a/156198.html

相关文章:

  • 2024 年 Apifox 和 Postman 对比介绍详细版
  • Mac intel 安装IDEA激活时遇到问题 jetbrains.vmoptions.plist: Permission denied
  • 若依笔记(八):芋道的Docker容器化部署
  • 2411C++,C++26反射示例
  • WebRTC API分析
  • 深度学习之 LSTM
  • 继阿里云、滴滴、语雀后,腾讯视频也出现重大系统故障
  • Leetcode2661. 找出叠涂元素
  • Android Audio实战——音频属性设置(二十二)
  • 根据关键词写作文章的软件,根据标题写作文章的工具
  • 【无标题】parseq
  • 高校人员信息管理系统C++
  • 通义灵码简单使用例子
  • MATLAB算法实战应用案例精讲-【图像处理】人脸识别(补充篇)
  • 手持机|三防智能手机_4寸/5寸/6寸安卓系统三防手机PDA手持终端方案
  • 保存防火墙的规则和自定义链
  • 【Vulnhub 靶场】【Momentum: 2】【简单】【20210628】
  • 基于PHP的在线日语学习平台
  • Python---函数递归---练习:使用递归求N的阶乘(如n=100)(本文以递归算法 解法为主)
  • 领域驱动架构(DDD)建模
  • Rstudio-server无法登陆?几种解决方法 卡死 崩溃了
  • 基本面选股的方法
  • 基于Java SSM框架实现美好生活九宫格日志网站系统项目【项目源码+论文说明】计算机毕业设计
  • Java内存缓存神器:Caffeine(咖啡因)
  • qt-C++笔记之addItem(), addWidget(), addLayout()
  • Kettle 安装配置