數據清洗常用的2個小技巧

Pandas 巧用 str.split 和 str.cat

因爲以上兩個方法,直接按列操作,所以省掉一層 for 循環,下面直接看例子。

df = pd.DataFrame({'names':["Geordi La Forge", "Deanna Troi", "Jack"],'IDs':[1,2,3]})
df

列分割

對 names 列,按照第一個空格分割爲兩列:

df["first_name"] = df["names"].str.split(n = 1).str[0]
df["last_name"] = df["names"].str.split(n = 1).str[1]
df

結果如下:

列合併方法 1

分割列搞定,接下來再合並回去,使用 cat 方法:

df["names_copy"] = df["first_name"].str.cat(df["last_name"], sep = " ")
df

合併兩列得到一個新列 names_copy 搞定!

列合併方法 2

還有別的合併方法嗎,直接使用 + 連接字符串:

df["names_copy2"] = df["first_name"] + " "+ df["last_name"]
df

效果是一樣的:

Pandas 多條件篩選可讀性較好的寫法

有特徵上百個,根據多個特徵篩選 DataFrame 時,如果這麼做,可讀性不太友好:

df[(df["continent"] == "Europe") & (df["beer_servings"] > 150) & (df["wine_servings"] > 50) & (df["spirit_servings"] < 60)]

連續多個篩選條件寫到一行裏。

更好可讀性的寫法

cr1 = df["continent"] == "Europe"
cr2 = df["beer_servings"] > 150
cr3 = df["wine_servings"] > 50
cr4 = df["spirit_servings"] < 60

df[cr1 & cr2 & cr3 & cr4]

個人更喜歡後者,雖然代碼多幾行,但是可讀性更好一些,拆開多個過濾條件並分別賦值給對象,最後再傳到 df 中,代碼看起來更清爽。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章