python pandas - 生成具有多个条件的视图/复制警告过滤数据框
Posted
技术标签:
【中文标题】python pandas - 生成具有多个条件的视图/复制警告过滤数据框【英文标题】:python pandas - generating view/copy warning filtering dataframe with multiple conditions 【发布时间】:2015-11-08 04:19:41 【问题描述】:我知道这是关于 ad nauseum 的文章,并且此链接已被反复引用 (pandas: Returning a view versus a copy),但我似乎无法在没有收到警告的情况下写下这条简单的行。这让我发疯了,我的语法看起来像建议。
df['A'][(df['B']>=10) & (df['B']<50)] = 'group1'
有人能解释一下我犯了什么错误吗?
【问题讨论】:
除了回答,还可以做df['A'] = np.where( condition, 'group1', value_if_false )
【参考方案1】:
如示例所示,使用.loc
并将列和行条件放在同一个订阅中:
df.loc[(df['B']>=10) & (df['B']<50), 'A'] = 'group1'
任何时候你有两组括号,比如blah[...][...]
,你都在做链式索引。为避免链式索引,您需要将所有条件放入一组括号中。
【讨论】:
对不起 BrenBarn,我想补充一点,我尝试过 df.ix[:,'A'][...] 但你的解释是有道理的。以上是关于python pandas - 生成具有多个条件的视图/复制警告过滤数据框的主要内容,如果未能解决你的问题,请参考以下文章
FillNaN 具有多个条件并在 Pandas 中使用 n-1 和 n+2 值