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

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

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

什么是Pandas Data Frame?

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

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

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

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

split和explode字符串

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

split

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

import pandas as pddata = {'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.lryc.cn/news/251565.html

相关文章:

  • 【Tkinter 入门教程】
  • 深入理解Java中继承的高级使用方案
  • nexus私服开启HTTPS
  • 融合CFPNet的EVC-Block改进YOLO的太阳能电池板缺陷检测系统
  • 传媒行业CRM:打造高效客户管理,提升品牌影响力
  • 基于深度学习的肺炎CT图像检测诊断系统
  • YOLOv8改进 | 2023 | SCConv空间和通道重构卷积(精细化检测,又轻量又提点)
  • Python 全栈体系【四阶】(一)
  • Git【成神路】
  • 文件操作详解
  • 模块 A:web理论测试
  • git rebase冲突说明(base\remote\local概念说明)
  • 函数式接口的妙用,让异步执行更简单
  • 读书笔记:《More Effective C++》
  • 手写VUE后台管理系统6 - 支持TS声明文件.d.ts
  • 第八天:信息打点-系统端口CDN负载均衡防火墙
  • 一款充电桩解决方案设计
  • Leetcode 2953. Count Complete Substrings
  • 【Python-第三方库-pywin32】随笔- Python通过`pywin32`获取窗口的属性
  • Flask使用线程异步执行耗时任务
  • zabbix监控nginx
  • 【CVE-2023-49103】ownCloud graphapi信息泄露漏洞(2023年11月发布)
  • 可视化数据库管理客户端:Adminer
  • Python----字典练习
  • CentOS 部署 WBO 在线协作白板
  • qt-C++笔记之QStringList
  • ply前端
  • U盘不仅能在电脑上使用,在手机上也可使用,包括安卓和苹果手机,但苹果的较特殊
  • 面试数据库八股文十问十答第二期
  • 【LeetCode】每日一题 2023_12_2 拼车(模拟/差分)