python - Python Pandas 根据条件更改值
问题描述
你好吗?我对代码很陌生,我有一个问题:
我想遍历一列,并且我想根据条件更改此列的值,在这种情况下,我想更改列“a1”的值:如果值包含单词“Juancito”,我想更改它只是'Juancito'。for 循环可以正常工作,但最终值不会改变。
我做错了什么?
import pandas as pd
inp = [{'a1':'Juancito 1'}, {'a1':'Juancito 2'}, {'a1':'Juancito 3'}]
df = pd.DataFrame(inp)
for i in df['a1']:
if 'Juancito' in i:
i = 'Juancito'
else:
pass
df.head()
解决方案
你不需要for
循环。
只需numpy.where
使用Series.str.contains
:
In [83]: import numpy as np
In [84]: df['a1'] = np.where(df['a1'].str.contains('Juancito'), 'Juancito', df['a1'])
In [85]: df
Out[85]:
a1
0 Juancito
1 Juancito
2 Juancito
推荐阅读
- php - 为什么在 ajax 中响应需要很长时间但 php 代码执行速度很快?
- php - CodeIgniter 查询生成器错误
- react-native - 如何在 React Native 中为样式对象添加道具验证?
- python - 运行nosetest命令时tox抛出和错误
- java - 仅当它为空时才在 Kotlin 中实例化一个变量?
- linux - RMAN 命令未在 .sh 文件中执行
- .net-core - 如何在 dotnet core 的 raspberri pi 中部署示例 GRPC [客户端-服务器] 解决方案
- python - 如何从列表中删除重复的字典对象
- odata - 如何在 OData V4 中添加客户标头?
- firebase - 错误“firebase deploy”时出现意外的函数表达式