首頁 > 軟體

python pandas分割DataFrame中的字串及元組的方法實現

2022-03-10 13:01:05

1.使用str.split()方法

可以使用pandas 內建的 str.split() 方法實現分割字串型別的資料,並將分割結果寫入DataFrame中,以表格形式呈現。

語法:

Series.str.split(pat=None, n=-1, expand=False)

其中,pat是字串或正規表示式,
n是一個整數數位,預設為-1。為0或-1時即為最大次數的分割。其他數值因數值而定。
expand為布林型別,表示分割後是否轉換為DataFrame。預設為False表示不轉換。

首先準備一組DataFrame資料:

import pandas as pd

pd.set_option('display.unicode.east_asian_width', True)
address = ['重慶 重慶市 南岸區 ',
           '江蘇省 蘇州市 吳江區 吳江經濟技術開發區亨通路',
           '江蘇省 蘇州市 園區 蘇州市工業園區唯亭鎮陽澄湖大道維納陽光花園',
           '重慶 重慶市 南岸區 長生橋鎮茶園新區長電路',
           '安徽省 滁州市 明光市 三界鎮中心街10001號',
           '山東省 濰坊市 壽光市 聖城街道濰坊科技學院',
           '吉林省 長春市 二道區 東盛街道彩虹風景',
           '福建省 廈門市 湖裡區 江頭街道廈門市湖裡區祥店福滿園小區',
           '山西省 呂梁市 離石區 濱河街道山西省呂梁市離石區後瓦師巷',
           '河南省 濮陽市 華龍區 中原路街道中原路與107國道交叉口東',
           '廣東省 深圳市 寶安區 鬆崗街道鬆崗鎮潭頭第二工業區',
           '河北省 石家莊市 辛集市 辛集鎮辛集市新皮革城7期125樓',
           '廣東省 深圳市 寶安區 鬆崗街道鬆崗鎮潭頭第二工業區',
           '貴州省 貴陽市 花溪區 黨武鎮師範大學師大超市',
           '廣東省 深圳市 福田區 沙頭街道上沙龍秋村五十巷',
           '福建省 福州市 閩侯縣 上街鎮福州閩侯上街國賓大道',
           '湖北省 鄂州市 鄂城區 西山街道江碧路和馨居',
           '上海 上海市 松江區',
           '山東省 青島市 市北區',
           '山西省 晉中市 靈石縣',
           '浙江省 杭州市 餘杭區']
df = pd.DataFrame()
df['address'] = address
print(df)

原資料範例如下:

將address分割成不同的地理級別,結果生成一個DataFrame物件:

print("=======================================================================")
df1 = df['address'].str.split(' ', expand=True)
print(df1)

結果如下:

最後將結果放入原DataFrame中。

df['省'] = series[0]
df['市'] = series[1]
df['區'] = series[2]
df = df[['省', '市', '區']]
print(df)

2.使用join()與split()方法結合

import pandas as pd

pd.set_option('display.unicode.east_asian_width', True)
address = ['重慶 重慶市 南岸區 ',
           '江蘇省 蘇州市 吳江區 吳江經濟技術開發區亨通路',
           '江蘇省 蘇州市 園區 蘇州市工業園區唯亭鎮陽澄湖大道維納陽光花園',
           '重慶 重慶市 南岸區 長生橋鎮茶園新區長電路',
           '安徽省 滁州市 明光市 三界鎮中心街10001號',
           '山東省 濰坊市 壽光市 聖城街道濰坊科技學院',
           '吉林省 長春市 二道區 東盛街道彩虹風景',
           '福建省 廈門市 湖裡區 江頭街道廈門市湖裡區祥店福滿園小區',
           '山西省 呂梁市 離石區 濱河街道山西省呂梁市離石區後瓦師巷',
           '河南省 濮陽市 華龍區 中原路街道中原路與107國道交叉口東',
           '廣東省 深圳市 寶安區 鬆崗街道鬆崗鎮潭頭第二工業區',
           '河北省 石家莊市 辛集市 辛集鎮辛集市新皮革城7期125樓',
           '廣東省 深圳市 寶安區 鬆崗街道鬆崗鎮潭頭第二工業區',
           '貴州省 貴陽市 花溪區 黨武鎮師範大學師大超市',
           '廣東省 深圳市 福田區 沙頭街道上沙龍秋村五十巷',
           '福建省 福州市 閩侯縣 上街鎮福州閩侯上街國賓大道',
           '湖北省 鄂州市 鄂城區 西山街道江碧路和馨居',
           '上海 上海市 松江區',
           '山東省 青島市 市北區',
           '山西省 晉中市 靈石縣',
           '浙江省 杭州市 餘杭區']
df = pd.DataFrame()
df['address'] = address
df = df.join(df['address'].str.split(' ', expand=True))
print(df)

執行結果同上。

3. 使用apply方法分割元組

使用apply方法,將某個元素型別為元組的列,將其元組中的元素拆分為不同的列。

import pandas as pd

df = pd.DataFrame({'a': [1, 2, 3, 4, 5], 'b': [(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]})
print(df)
df[['b1', 'b2']] = df['b'].apply(pd.Series)
print(df)

或者也可以這樣寫:

import pandas as pd

df = pd.DataFrame({'a': [1, 2, 3, 4, 5], 'b': [(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]})
print(df)

df = df.join(df['b'].apply(pd.Series))
print(df)

參考資源: python資料分析從入門到精通 明日科技編著 清華大學出版社

到此這篇關於python pandas分割DataFrame中的字串及元組的方法實現的文章就介紹到這了,更多相關python pandas分割DataFrame字串及元組內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com