您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)Pandas怎么將一列中的文本拆分為多行,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
在數(shù)據(jù)處理過(guò)程中,經(jīng)常會(huì)遇到以下類型的數(shù)據(jù):
在同一列中,本該分別填入多行中的數(shù)據(jù),被填在一行里了,然而在分析的時(shí)候,需要拆分成為多行。
在上圖中,列名為"Country" ,index為4和5的單元格內(nèi),值為"UK/Australia"和"UK/Netherland"。
今天,我們來(lái)介紹將含有多值的內(nèi)容分拆成多行的幾種方法。
加載數(shù)據(jù)
PS:可以通過(guò)左右滑動(dòng)來(lái)查看代碼
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
分為如下幾步:
將含有多值的列進(jìn)行拆分,然后通過(guò) stack()方法進(jìn)行變換,并通過(guò)index的設(shè)置來(lái)完成
用 drop()方法從DataFrame中刪除含有多值的列
然后用 join()方法來(lái)合并
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
過(guò)程分步介紹
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基本是一樣的,只是在具體的細(xì)節(jié)方面有些差異。代碼如下:
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
過(guò)程分步介紹如下:
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
關(guān)于“Pandas怎么將一列中的文本拆分為多行”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。