数据清洗常用的 2 个小 trick

Pandas 巧用 str.splitstr.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 中,代码看起来更清爽。

另一种多条件过滤的建议写法,供大家参考选择。

觉得有用,点个在看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值