Python: pandas.Series.str.split( pat=”\s+|\t”, expand=True, n=3 ) ; 如何將Series依據分隔子(tab與不定數空白混用) 拆分為多欄的DataFrame?

加入好友
加入社群
Python: pandas.Series.str.split( pat="s+|t", expand=True, n=3 ) ; 如何將Series依據分隔子(tab與不定數空白混用) 拆分為多欄的DataFrame? - 儲蓄保險王

test.txt內容如下:

Python: pandas.Series.str.split( pat="s+|t", expand=True, n=3 ) ; 如何將Series依據分隔子(tab與不定數空白混用) 拆分為多欄的DataFrame? - 儲蓄保險王

第一列最後的a之後,故意多兩個空白

Q1: 如何分辨分隔子是tab還是不定數空白?

Q2: 如何讀取tab與不定數空白混用的csv?

Q3: 如何用pandas.Series.str.split()

將Series依據分隔子(tab與不定數空白混用)

拆分為多欄的DataFrame?

 

Q1 & Q2:

Python: pandas.Series.str.split( pat="s+|t", expand=True, n=3 ) ; 如何將Series依據分隔子(tab與不定數空白混用) 拆分為多欄的DataFrame? - 儲蓄保險王

df的第0列出現三個 \t

第一列則無

可以據此分辨

tab與不定數空白

雖然df只有一欄而已

仍須注意其type為DataFrame

需要將df轉為Series

才能使用

pandas.Series.str.split( pat = “\s+|\t“, expand=True, n=3 )

使用 ser = df.iloc[:,0] 轉換:

Python: pandas.Series.str.split( pat="s+|t", expand=True, n=3 ) ; 如何將Series依據分隔子(tab與不定數空白混用) 拆分為多欄的DataFrame? - 儲蓄保險王

或者df[0] 也可,

0為column name:

#df[[0]]則為DataFrame,

#內層的[]是list的意思

Python: pandas.Series.str.split( pat="s+|t", expand=True, n=3 ) ; 如何將Series依據分隔子(tab與不定數空白混用) 拆分為多欄的DataFrame? - 儲蓄保險王

 

df_split = ser.str.split( pat =”\s+|\t“,expand=True)

正則表示法:

\s+ 不定數空白

\t TAB鍵

| 或

Python: pandas.Series.str.split( pat="s+|t", expand=True, n=3 ) ; 如何將Series依據分隔子(tab與不定數空白混用) 拆分為多欄的DataFrame? - 儲蓄保險王

df_split

df_split_n3

可以看出參數n=3的差異

 

str type的變數,

參數使用sep (非pat)

且不支援 正則表示法:

Python: pandas.Series.str.split( pat="s+|t", expand=True, n=3 ) ; 如何將Series依據分隔子(tab與不定數空白混用) 拆分為多欄的DataFrame? - 儲蓄保險王

 

df_split.to_excel(r”C:\temp\df_split.xlsx”):

Python: pandas.Series.str.split( pat="s+|t", expand=True, n=3 ) ; 如何將Series依據分隔子(tab與不定數空白混用) 拆分為多欄的DataFrame? - 儲蓄保險王

最後一欄為空

Python中顯示None ” (空字串):

Python: pandas.Series.str.split( pat="s+|t", expand=True, n=3 ) ; 如何將Series依據分隔子(tab與不定數空白混用) 拆分為多欄的DataFrame? - 儲蓄保險王

多加一個參數n=3

df_split_n3.to_excel(r”C:\temp\df_split_n3.xlsx”)

Python: pandas.Series.str.split( pat="s+|t", expand=True, n=3 ) ; 如何將Series依據分隔子(tab與不定數空白混用) 拆分為多欄的DataFrame? - 儲蓄保險王

沒有出現最後一個空欄了

但a後面有多餘的空白

也就是剩下沒切割的

都堆在最後一欄

Python中顯示:

Python: pandas.Series.str.split( pat="s+|t", expand=True, n=3 ) ; 如何將Series依據分隔子(tab與不定數空白混用) 拆分為多欄的DataFrame? - 儲蓄保險王

如果想要處理多餘的空白

df_split_n3.iloc[:, -1].str.strip()

Python: pandas.Series.str.split( pat="s+|t", expand=True, n=3 ) ; 如何將Series依據分隔子(tab與不定數空白混用) 拆分為多欄的DataFrame? - 儲蓄保險王

pandas官網說明(點此或下圖連結):

Python: pandas.Series.str.split( pat="s+|t", expand=True, n=3 ) ; 如何將Series依據分隔子(tab與不定數空白混用) 拆分為多欄的DataFrame? - 儲蓄保險王

 

推薦hahow線上學習python: https://igrape.net/30afN

加入好友
加入社群
Python: pandas.Series.str.split( pat="s+|t", expand=True, n=3 ) ; 如何將Series依據分隔子(tab與不定數空白混用) 拆分為多欄的DataFrame? - 儲蓄保險王

儲蓄保險王

儲蓄險是板主最喜愛的儲蓄工具,最喜愛的投資理財工具則是ETF,最喜愛的省錢工具則是信用卡

You may also like...

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *