python – Pandas – 基于Boollean DataFrame替换DataFrame中的值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – Pandas – 基于Boollean DataFrame替换DataFrame中的值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1950字,纯文字阅读大概需要3分钟。
内容图文
![python – Pandas – 基于Boollean DataFrame替换DataFrame中的值](/upload/InfoBanner/zyjiaocheng/789/9cd07af9369f477c8130633e22f769eb.jpg)
我正在使用Pandas v0.20.2并且我有DataFrame,如下所示:
df = pd.DataFrame(dict(a=[0,1], b=[3,4], c=[6,7]),
index=['spam', 'ham'])
# a b c
# spam 0 3 6
# ham 1 4 7
我有另一个掩码的DataFrame:
mask = pd.DataFrame(dict(a=[True,False], b=[True,True]),
index=['spam', 'ham'])
# a b
# spam True True
# ham False True
我想将df中的值设置为等于999,其中掩码中为True.
我认为以下内容可行:
df[mask] = 999
但事实并非如此.我收到以下错误:
ValueError Traceback (most recent call last)
<ipython-input-65-503f937859ab> in <module>()
----> 1 df[mask] = 999
/home/gbra/anaconda3/envs/outer_disk/lib/python2.7/site-packages/pandas/core/frame.pyc in __setitem__(self, key, value)
2326 self._setitem_array(key, value)
2327 elif isinstance(key, DataFrame):
-> 2328 self._setitem_frame(key, value)
2329 else:
2330 # set column
/home/gbra/anaconda3/envs/outer_disk/lib/python2.7/site-packages/pandas/core/frame.pyc in _setitem_frame(self, key, value)
2364 self._check_inplace_setting(value)
2365 self._check_setitem_copy()
-> 2366 self._where(-key, value, inplace=True)
2367
2368 def _ensure_valid_index(self, value):
/home/gbra/anaconda3/envs/outer_disk/lib/python2.7/site-packages/pandas/core/generic.pyc in _where(self, cond, other, inplace, axis, level, try_cast, raise_on_error)
5096 for dt in cond.dtypes:
5097 if not is_bool_dtype(dt):
-> 5098 raise ValueError(msg.format(dtype=dt))
5099
5100 cond = cond.astype(bool, copy=False)
ValueError: Boolean array expected for the condition, not float64
我将不胜感激任何帮助.
解决方法:
您可以重新索引蒙版以使其具有与df相同的形状,然后使用df.mask:
df.mask(mask.reindex(df.index, df.columns, fill_value=False), 999)
Out:
a b c
spam 999 999 6
ham 1 999 7
此时,常规索引也应该有效:
df[mask.reindex(df.index, df.columns, fill_value=False)] = 999
内容总结
以上是互联网集市为您收集整理的python – Pandas – 基于Boollean DataFrame替换DataFrame中的值全部内容,希望文章能够帮你解决python – Pandas – 基于Boollean DataFrame替换DataFrame中的值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。