Pandas按年份条件拆分DataFrame(禁用inplace=True)的更优方法
更高效的DataFrame拆分方案
你的现有实现完全可行,但可以通过一次性计算布尔掩码的方式优化,避免重复过滤条件,提升代码效率(尤其针对大型数据集)。
优化思路
先算出判断条件的布尔掩码,再用这个掩码同时拆分两个DataFrame,不用重复计算df["Year"] >= 2000:
import pandas as pd cars = {'Make': {0: 'BMW', 1: 'Kia', 2: 'BMW', 3: 'BMW', 4: 'BMW', 5: 'Kia'}, 'Model': {0: '1 serie', 1: 'K7', 2: '6 serie', 3: '6 serie', 4: 'X3', 5: 'Bongo'}, 'Year': {0: 2007, 1: 2012, 2: 1982, 3: 1987, 4: 2006, 5: 2000}} df = pd.DataFrame.from_dict(cars) # 一次性计算布尔掩码 mask = df["Year"] >= 2000 df_2000 = df[mask] df = df[~mask] # ~ 表示取反,等价于 Year < 2000
优势说明
- 只计算一次过滤条件,减少重复运算,在数据量较大时性能提升明显;
- 代码逻辑更清晰,掩码变量可以直观表达过滤规则,便于维护。
内容的提问来源于stack exchange,提问作者AnnAc0nda
相关产品推荐
相关产品推荐

