如何根据列值拆分DataFrame?按BDA是否为空拆分raw示例
嘿,这个需求在pandas里处理起来超简单的,核心就是用布尔索引来拆分数据。我给你两种常用的实现方式,你挑顺手的来:
方法一:直接使用布尔索引筛选
这种方法最直观,直接通过列的notna()和isna()方法生成筛选条件:
- 生成
df1(存储BDA列不为空的所有行):df1 = raw[raw['BDA'].notna()] - 生成
df2(存储BDA列为空的所有行):df2 = raw[raw['BDA'].isna()]
方法二:使用
query()方法简化语法 如果你偏爱更简洁的代码风格,可以用query()方法来写筛选条件:
- 生成
df1:df1 = raw.query('BDA.notna()') - 生成
df2:df2 = raw.query('BDA.isna()')
额外提示:避免修改时的警告
默认情况下,新生成的DataFrame是原始数据的视图,如果之后你需要修改df1或df2的数据,建议在筛选后加上.copy(),这样能避免SettingWithCopyWarning警告:
df1 = raw[raw['BDA'].notna()].copy() df2 = raw[raw['BDA'].isna()].copy()
不管用哪种方法,都会完整保留原始raw里的所有行,只是把它们分别分到两个独立的DataFrame中~
内容的提问来源于stack exchange,提问作者ekim420
相关产品推荐
相关产品推荐

