iT邦幫忙

2023 iThome 鐵人賽

DAY 28
0
自我挑戰組

Pandas|資料前處理工具 系列 第 28

Day 28|Interview Query - Complete Addresses

  • 分享至 

  • xImage
  •  

■ 題目|Interview Query - Complete Addresses

You’re given two dataframes. One contains information about addresses and the other contains relationships between various cities and states.

Write a function complete_address to create a single dataframe with complete addresses in the format of street, city, state, zip code.

■ 解題思路

  1. 釐清題意:重新組合 address 的內容
  2. 操作技巧:
    (1) 拆分原始 address - 使用 str.split( ) 依字串拆分
    (2) 去除空白格 - 拆分後,city 和 zip 前會帶有一空白格,需刪除
    (3) 關聯合併 - df_addressesdf_cities 依相同欄位 city 合併【Day 17|資料合併的三種常用語法
    (4) 獲得結果 - 組合題意所需的 address,刪除其他欄位
  3. 實作練習:
    import pandas as pd
    def complete_address(df_addresses: pd.DataFrame, df_cities: pd.DataFrame):
        # spilt the address 拆分adress
        df_addresses[['street','city','zip']] = df_addresses['address'].str.split(',',expand=True)
        # check the space 檢查並刪除空白格
        df_addresses['city'] = df_addresses['city'].str.strip()
        df_addresses['zip'] = df_addresses['zip'].str.strip()
        # merge two dataframe 關聯合併
        new = pd.merge(df_addresses,df_cities,on='city')
        # get the complete addresses 組合所需資料
        new['address'] = new['street'] +', '+ new['city'] +', '+ new['state'] +', '+ new['zip']
        new.drop(columns=['street','city','zip','state'],inplace=True)
        return new
    
  4. 輸出結果:
    https://ithelp.ithome.com.tw/upload/images/20231013/20162238jHliuCgZxg.jpg

■ 操作補充

  Pandas 中的 str.split( pat = '分割符號', expand = True 或 False ) 操作目的在於「在指定分隔符號依字串拆分」,當資料內容冗長,需要切分閱讀或重新組合時,可採取該用法!

  • 參數 pat:指定分割符合,預設為一格空白格。
  • 參數 expand:是否將拆分的結果擴展成不同的 column,預設為 False。

嗨,我是 Eva,一位正在努力跨進資料科學領域的女子!
這道屬於 Interview Query 中 Pandas Medium 難度的題目,需熟悉分割操作,礙於之前著重在其他操作語法,解題時多花了時間研究 str.split() 的使用方式,很開心又多紀錄一個常用的操作!大家不妨也挑戰看看吧!如果有任何不理解、錯誤或其他方法想分享的話,歡迎留言!喜歡的話,也歡迎按讚訂閱唷!我們明天見!


上一篇
Day 27|Interview Query - Impute Median
下一篇
Day 29|Interview Query - Customer Analysis
系列文
Pandas|資料前處理工具 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言