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 - 生成具有多个条件的视图/复制警告过滤数据框的主要内容,如果未能解决你的问题,请参考以下文章

在具有多个条件的 Pandas 中分支

Pandas:过滤具有多个字符串条件的行[重复]

根据 pandas df 中的多个条件映射不同的数据帧

FillNaN 具有多个条件并在 Pandas 中使用 n-1 和 n+2 值

python使用pandas基于时间条件查询多个oracle数据表

如何使用 Python Pandas 合并多个 CSV 文件