利用 Pandas 將資料集中的某列文字拆分為多行

2021-09-12 17:39:40 字數 2339 閱讀 2437

手頭的專案要求用 tableau 建立乙個 story,資料集是摩拜上海城區使用者使用資料。其中有乙個維度的資料處理起來有點棘手。

注意 track 這個維度的資料,它表示的是在訂單時間內的行車軌跡,裡面包含了大量座標點。

按照 tidydata 的要求:

我需要將 track 的座標拆分為多行。

google 了問題的解決方式,**是

mobike.drop("track",axis = 1).join(mobike["track"].str.split("#",expand = true).stack().reset_index(level = 1,drop = true).rename("track"))
解決問題不能光知其然,不知其所以然。所以我將這行**逐語句進行了拆分,一探**內部的工作原理。

最外層**是:

mobike.join()
這裡呼叫了 dataframe 的 join 方法,很基礎。

這部分做的工作比較多,首先是 split 方法。python 的 split 方法可以將字串按照指定的字元進行分割,這個例子中指定的字元是「#」。如果不加引數expand = truesplit()會返回拆分後的字串陣列。

mobike["track"].str.split("#")

# ["121.372,31.118","121.372,31.119","121.373,31.117","1...]

# ["121.419,31.200","121.419,31.201","121.420,31.199","1...]

# ...

加了expand = true會將陣列拆開,陣列中的每乙個元素都會單獨儲存。

mobike["track"].str.split("#",expand = true)

# "121.372,31.118" "121.372,31.119" "121.373,31.117" "1...

# "121.419,31.200" "121.419,31.201" "121.420,31.199" "1...

# ...

到這裡相當於將列中所有文字拆成了乙個巨大的表,表中每個單元格有乙個值。有些行拆分後的元素比較少,沒有值可以填充的單元格補充 none

stack()會把整個表逐行堆疊成一列。

這樣就成功的將一列中的所有文字拆分成了多行,而且它是乙個 dataframe 。不過到這裡還沒有結束,我們還需要將拆出來的這個 dataframe 與原資料集合並。

注意到拆分出來的 dataframe 是多重索引的,需要用reset_index()將多重索引重置掉。在split()的時候,我們引入了超級多的 none。這時候就可以通過reset_index(..., drop =true)將值為 none 的行刪除。

與原資料集通過join()合併的時候,a.join(b),a、b兩個 dataframe 都需要有名字,因此需要rename("track")

至此,我們的任務算做完了。

我在列拆分為多行的基礎上,還將 track 拆分成了兩個變數——track_x,track_y。這裡用到了 pandas 的函式對映進行資料轉換。

mobike["track" = mobike["track"].split(",")

mobike["track_x"] = mobike["track"].map(lambda x:x[0])

mobike["track_y"] = mobike["track"].map(lambda x:x[1])

通過 map 進行列的擴充套件速度非常非常快。

本文用到的摩拜資料及演示 notebook 均可在

利用 Pandas 將資料集中的某列文字拆分為多行

手頭的專案要求用 tableau 建立乙個 story,資料集是摩拜上海城區使用者使用資料。其中有乙個維度的資料處理起來有點棘手。注意 track 這個維度的資料,它表示的是在訂單時間內的行車軌跡,裡面包含了大量座標點。按照 tidydata 的要求 我需要將 track 的座標拆分為多行。goog...

利用 Pandas 將資料集中的某列文字拆分為多行

手頭的專案要求用 tableau 建立乙個 story,資料集是摩拜上海城區使用者使用資料。其中有乙個維度的資料處理起來有點棘手。注意 track 這個維度的資料,它表示的是在訂單時間內的行車軌跡,裡面包含了大量座標點。按照 tidydata 的要求 我需要將 track 的座標拆分為多行。goog...

利用pandas將csv格式資料寫入到excel

一 安裝模組 pip install pandas pip install xlwt 二 示例 1 csv檔案內容展示 print df 輸出csv 中結果 data ordereddict 有序字典 print df.columns 列名 for line in list df.columns d...