广告
返回顶部
首页 > 资讯 > 精选 >Pandas怎么将一列中的文本拆分为多行
  • 866
分享到

Pandas怎么将一列中的文本拆分为多行

2023-06-04 11:06:24 866人浏览 泡泡鱼
摘要

这篇文章将为大家详细讲解有关pandas怎么将一列中的文本拆分为多行,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。  在数据处理过程中,经常会遇到以下类型的数据:在同一列中,本该分别填

这篇文章将为大家详细讲解有关pandas怎么将一列中的文本拆分为多行,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

 

 

在数据处理过程中,经常会遇到以下类型的数据:

在同一列中,本该分别填入多行中的数据,被填在一行里了,然而在分析的时候,需要拆分成为多行。

在上图中,列名为"Country" ,index为4和5的单元格内,值为"UK/Australia"和"UK/Netherland"。

今天,我们来介绍将含有多值的内容分拆成多行的几种方法。

加载数据

PS:可以通过左右滑动来查看代码

1.         import pandas as pd

2.          

3.         df = pd.DataFrame({'Country':['China','US','Japan','EU','UK/Australia', 'UK/Netherland'],

4.                       'Number':[100, 150, 120, 90, 30, 2],

5.                       'Value': [1, 2, 3, 4, 5, 6],

6.                       'label': list('abcdef')})

7.         df

8.          

9.         Out[2]:

10.               Country  Number  Value label

11.      0          China     100      1     a

12.      1             US    150      2     b

13.      2          Japan     120      3     c

14.      3             EU     90      4     d

15.      4   UK/Australia      30      5     e

16.      5  UK/Netherland       2      6     f

1Method-1

分为如下几步:

  1. 将含有多值的列进行拆分,然后通过 stack()方法进行变换,并通过index的设置来完成

  2. 用 drop()方法从DataFrame中删除含有多值的列

  3. 然后用 join()方法来合并

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

2.         Out[3]:

3.            Number  Value label     Country

4.         0     100      1     a       China

5.         1     150      2     b          US

6.         2     120      3     c       Japan

7.         3      90      4     d          EU

8.         4      30      5     e          UK

9.         4      30      5     e   Australia

10.      5       2      6     f          UK

11.      5       2      6     f  Netherland

过程分步介绍

1.         df['Country'].str.split('/', expand=True).stack()

2.         Out[4]:

3.         0  0         China

4.         1  0            US

5.         2  0         Japan

6.         3  0            EU

7.         4  0            UK

8.            1     Australia

9.         5  0            UK

10.         1    Netherland

11.      dtype:object

12.       

13.      df['Country'].str.split('/', expand=True).stack().reset_index(level=1, drop=True)

14.      Out[5]:

15.      0         China

16.      1            US

17.      2         Japan

18.      3            EU

19.      4            UK

20.      4     Australia

21.      5            UK

22.      5    Netherland

23.      dtype:object

24.       

25.      df['Country'].str.split('/', expand=True).stack().reset_index(level=1, drop=True).rename('Country')

26.      Out[6]:

27.      0         China

28.      1            US

29.      2         Japan

30.      3            EU

31.      4            UK

32.      4     Australia

33.      5            UK

34.      5    Netherland

35.      Name: Country, dtype:object

36.       

37.      df.drop('Country', axis=1)

38.      Out[7]:

39.         Number  Value label

40.      0     100      1     a

41.      1     150      2     b

42.      2     120      3     c

43.      3      90      4     d

44.      4      30      5     e

45.      5       2      6     f

2Method-2

该方法的思路跟Method-1基本是一样的,只是在具体的细节方面有些差异。代码如下:

1.         df['Country'].str.split('/', expand=True).stack().reset_index(level=0).set_index('level_0').rename(columns={0:'Country'}).join(df.drop('Country', axis=1))

2.         Out[8]:

3.               Country  Number  Value label

4.         0       China     100      1     a

5.         1          US    150      2     b

6.         2       Japan     120      3     c

7.         3          EU     90      4     d

8.         4          UK     30      5     e

9.         4   Australia      30      5     e

10.      5          UK      2      6     f

11.      5  Netherland       2      6     f

过程分步介绍如下:

1.         df['Country'].str.split('/', expand=True).stack().reset_index(level=0)

2.         Out[9]:

3.            level_0          0

4.         0        0       China

5.         0        1          US

6.         0        2       Japan

7.         0        3          EU

8.         0        4          UK

9.         1        4   Australia

10.      0        5          UK

11.      1        5  Netherland

12.       

13.      df['Country'].str.split('/', expand=True).stack().reset_index(level=0).set_index('level_0')

14.      Out[10]:

15.                       0

16.      level_0           

17.      0             China

18.      1               US

19.      2             Japan

20.      3               EU

21.      4               UK

22.      4         Australia

23.      5               UK

24.      5        Netherland

25.       

26.      df['Country'].str.split('/', expand=True).stack().reset_index(level=0).set_index('level_0').rename(columns={0:'Country'})

27.      Out[11]:

28.                  Country

29.      level_0           

30.      0             China

31.      1               US

32.      2             Japan

33.      3               EU

34.      4               UK

35.      4         Australia

36.      5               UK

37.      5        Netherland

38.       

39.      df.drop('Country', axis=1)

40.      Out[12]:

41.         Number  Value label

42.      0     100      1     a

43.      1     150      2     b

44.      2     120      3     c

45.      3      90      4     d

46.      4      30      5     e

47.      5       2      6     f

关于“Pandas怎么将一列中的文本拆分为多行”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: Pandas怎么将一列中的文本拆分为多行

本文链接: https://www.lsjlt.com/news/237563.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Pandas怎么将一列中的文本拆分为多行
    这篇文章将为大家详细讲解有关Pandas怎么将一列中的文本拆分为多行,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。  在数据处理过程中,经常会遇到以下类型的数据:在同一列中,本该分别填...
    99+
    2023-06-04
  • mysql中如何将存在分隔符号的一列进行拆分,成为多行
    mysql中如何将存在分隔符号的一列进行拆分,成为多行 -- ****************************** 写在前面的说明 **********************************-- *************...
    99+
    2023-08-17
    mysql 数据库 sql
  • Python中怎么将Excel拆分为为多个CSV文件
    今天就跟大家聊聊有关Python中怎么将Excel拆分为为多个CSV文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、前言在日常生活或者工作中的时候,我们偶尔会遇到这样一种让人头...
    99+
    2023-06-15
  • Pandas怎么使用分隔符或正则表达式将字符串拆分为多列
    这篇“Pandas怎么使用分隔符或正则表达式将字符串拆分为多列”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Pandas怎么...
    99+
    2023-07-05
  • 使用Python怎么将一个文本文件拆分到多个文本文件
    使用Python怎么将一个文本文件拆分到多个文本文件?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。python可以做什么Python是一种编程语言,内置了许多有效的工具,Pyt...
    99+
    2023-06-14
  • 如何在Java中将一个列表拆分为多个较小的列表
    在Java中,有多种方法可以将一个列表拆分为多个较小的列表。在本文中,我们将介绍三种不同的方法来实现这一目标。 方法一:使用List.subList()方法 List接口提供了一个subList()方法,它可以用来获取列表中的一部分元素。我...
    99+
    2023-09-02
    java jvm 开发语言
  • Sql function 中怎么将多行中的列合并为一行一列
    Sql function 中怎么将多行中的列合并为一行一列,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。代码如下:  ...
    99+
    2022-10-18
  • SQL Server中怎么将一列的多行内容拼接成一行
    今天就跟大家聊聊有关SQL Server中怎么将一列的多行内容拼接成一行,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。昨天遇到一个SQL Serve...
    99+
    2022-10-18
  • 怎么使用HTML5中的contentEditable来将多行文本自动增高
    今天小编给大家分享一下怎么使用HTML5中的contentEditable来将多行文本自动增高的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作