文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-06-04 11:16

关注

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯