首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python从条件中更改值

Python从条件中更改值
EN

Stack Overflow用户
提问于 2021-01-22 17:12:04
回答 4查看 158关注 0票数 3

你好吗?我在密码方面很新,我有个问题:

我想迭代一列,并且我想根据一个条件来更改这个列的值,在这种情况下,我想从‘A1’栏中更改非常值:如果值包含'Juancito‘这个词,我想将它更改为'Juancito’。for循环工作正常,但值在最后没有变化。

我做错什么了?

代码语言:javascript
复制
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()
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-01-22 17:30:47

你不需要一个for 循环.

只需将numpy.whereSeries.str.contains结合使用

代码语言:javascript
复制
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
票数 3
EN

Stack Overflow用户

发布于 2021-01-22 17:19:39

试试这个:

代码语言:javascript
复制
import pandas as pd
inp = [{'a1':'Juancito 1'}, {'a1':'Juancito 2'}, {'a1':'Juancito 3'}]
df = pd.DataFrame(inp)

for i in range(df["a1"].shape[0]):
    print(i)
    if 'Juancito' in df["a1"][i]:
        df["a1"][i] = 'Juancito'
    else:
        pass
df.head()
票数 2
EN

Stack Overflow用户

发布于 2021-01-22 17:21:47

您没有在代码中设置dataframe元素的值。您只是暂时将其分配给i。一种方法是使用数字索引,其中行号将随i而改变,列号将是您想要处理的。

示例:

代码语言:javascript
复制
import pandas as pd
inp = [{'a1':'Juancito 1'}, {'a1':'Juancito 2'}, {'a1':'Juancito 3'}]
df = pd.DataFrame(inp)

for i in range(len(df)):
    if 'Juancito' in df.iloc[i][0]:
        df.iloc[i][0] = 'Juancito'
    else:
        pass
df.head()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65849706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档