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
结果如下:
分割列搞定,接下来再合并回去,使用 cat
方法:
df["names_copy"] = df["first_name"].str.cat(df["last_name"], sep = " ")
df
合并两列得到一个新列 names_copy
搞定!
还有别的合并方法吗,直接使用 +
连接字符串:
df["names_copy2"] = df["first_name"] + " "+ df["last_name"]
df
效果是一样的:
有特征上百个,根据多个特征筛选 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 中,代码看起来更清爽。
另一种多条件过滤的建议写法,供大家参考选择。
本文分享自 Python机器学习算法说书人 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!