【发布时间】:2015-10-13 13:29:05
【问题描述】:
我有一个要缩小的 pandas 数据集(删除 x 下的所有值)。
掩码是df[my_column] > 50
我通常只使用df = df[mask],但希望避免每次都复制,特别是因为它在函数中使用时容易出错(因为它只会在函数范围内改变)。
就地对数据集进行子集化的最佳方法是什么?
我正在考虑类似df.drop(df.loc[mask].index, inplace = True)
有没有更好的方法来做到这一点,或者在任何情况下这根本不起作用?
【问题讨论】:
-
你的意思是
view = df.loc[df[my_column] > 50]? -
我总是对 pandas 中的视图和复制内容感到困惑。本质上,我想给它一个下降的条件,然后就地下降。 df.loc[mask].index 会让 me 索引下降,对吗?
-
抱歉
df = df[mask]有什么问题?这最终会恢复被删除行的内存吗? -
好吧
mask本身就是一个布尔索引 -
更容易出错,并且在函数中使用时会生成“本地”副本,然后必须返回。我想在原地做一些改动,而不仅仅是为了记忆。
df.drop(df.loc[mask].index, inplace = True)似乎可行,但我希望可能有更好的解决方案(因为我的可能会在多级索引等上失败)
标签: pandas subset mask masking