python - 为什么我不能只更改一个 pandas 列中的值?
问题描述
我的数据框中有一列我有电子邮件而不是电子邮件。
有了这个切片,我只能得到没有电子邮件的字段:
df[~df['email'].str.contains('@', case=False)]['email']
但是当我尝试用我喜欢的值替换它时:
df[~df['email'].str.contains('@', case=False)]['email'] = 'No'
该列没有收到更改。
我没有收到任何错误,只有以下警告:
/home/rockstar/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:1: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
"""Entry point for launching an IPython kernel.
跟随我的完整数据框的图像:
此外,df[~df['email'].str.contains('@',case=False)] = 'No'
效果很好,但我最终会丢失线路其余部分的数据
解决方案
请参阅以下示例代码。
import pandas as pd
df = pd.DataFrame({"E-mail":["abc@de", "abcde"]})
df['E-mail'].loc[~df['E-mail'].str.contains('@', case = False)] = 'No'
推荐阅读
- python - 无法使用 pip 在带有 Cuda 11.0 的 Windows 10 (x86_64) 上安装 PyTorch
- javascript - 如何使用 HMTL5 Javascript Canvas 获得三个碰撞形状的交集并删除未碰撞的部分?
- sql-server - 使用子查询时“日期与 int 不兼容”
- web - 将域映射到 IIS 中托管的 Web 应用程序
- scom - 有没有办法通过邮递员将凭据传递给 SCOM rest api?我收到 401 错误
- flutter - 如何防止列表隐藏在 SliverPersistentHeader 中的选项卡栏下颤动?
- node.js - 尝试从 RapidAPI 获取的结果中访问数据
- python - 如何从图像分类中的卷积神经网络中获取预测标签
- javascript - 强制元素重绘并防止浏览器冻结
- c++ - 未定义的引用`ID3_Tag::ID3_Tag(char const*)`