你好吗?我在密码方面很新,我有个问题:
我想迭代一列,并且我想根据一个条件来更改这个列的值,在这种情况下,我想从‘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()发布于 2021-01-22 17:30:47
你不需要一个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发布于 2021-01-22 17:19:39
试试这个:
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()发布于 2021-01-22 17:21:47
您没有在代码中设置dataframe元素的值。您只是暂时将其分配给i。一种方法是使用数字索引,其中行号将随i而改变,列号将是您想要处理的。
示例:
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()https://stackoverflow.com/questions/65849706
复制相似问题