溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Pandas怎么將一列中的文本拆分為多行

發布時間:2021-11-30 10:40:32 來源:億速云 閱讀:340 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關Pandas怎么將一列中的文本拆分為多行,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

 

 

在數據處理過程中,經常會遇到以下類型的數據:

在同一列中,本該分別填入多行中的數據,被填在一行里了,然而在分析的時候,需要拆分成為多行。

在上圖中,列名為"Country" ,index45的單元格內,值為"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

1 Method-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

2 Method-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怎么將一列中的文本拆分為多行”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女