如何根据DataFrame中sex列的二分类值高效拆分数据?
高效拆分DataFrame按二元SEX变量的方法
嗨,这事儿用Pandas处理起来超简单,而且效率拉满,给你两种实用的方法:
方法1:布尔索引直接筛选(最直观)
这是最直接的方式,利用Pandas的矢量化布尔索引快速筛选行,代码简洁且效率高:
import pandas as pd # 构造你的原始DataFrame(模拟数据) data = { 'SEX': [0, 1, 1, 0, 0], 'X1': [15, 12, 14, 12, 11], 'X2': [91, 92, 94, 91, 95], 'X3': [12, 32, 12, 42, 12], 'X4': [25, 35, 45, 15, 25] } OriginalDF = pd.DataFrame(data) # 按SEX值拆分 DF1 = OriginalDF[OriginalDF['SEX'] == 0] DF2 = OriginalDF[OriginalDF['SEX'] == 1]
这个方法的优势是代码易懂,上手快,对于二元变量的场景完全够用,而且Pandas的布尔索引是底层优化过的,比自己写循环快得多。如果之后需要修改新生成的DataFrame,建议加上.copy()来避免SettingWithCopyWarning,比如:
DF1 = OriginalDF[OriginalDF['SEX'] == 0].copy()
方法2:groupby分组(适合多类别扩展)
如果你的SEX变量之后可能有更多取值,或者想一次性处理所有分组,用groupby会更灵活:
# 按SEX分组 groups = OriginalDF.groupby('SEX') # 提取对应分组的DataFrame DF1 = groups.get_group(0) DF2 = groups.get_group(1)
groupby会一次性把所有不同的SEX值都分好组,后续如果要新增类别,直接用get_group提取就行,不用再写多个筛选条件,同样是Pandas优化过的操作,效率没问题。
两种方法都能高效实现你的需求,根据自己的场景选就行~
内容的提问来源于stack exchange,提问作者Sharma Ji
相关产品推荐
相关产品推荐

