首页 > 解决方案 > 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()

标签: pythonpandasdataframe

解决方案


你不需要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

推荐阅读