使用for循环替换pandas列的每一行中的单元格值 [英] Replace cell values in each row of pandas column using for loop

查看:868
本文介绍了使用for循环替换pandas列的每一行中的单元格值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

请帮助我理解我的错误. 我正在尝试更改我的.csv文件中的一列. 我有.csv文件,如下所示:

Please, help me understand my error. I'm trying to change one column in my .csv file. I have .csv file as following:

sku,name,code  
k1,aaa,886  
k2,bbb,898  
k3,ccc,342  
k4,ddd,503  
k5,eee,401  

我想用"sku"列中的"_"符号替换"k"符号.
我写了代码:

I want to replace "k" symbol with the "_" symbol in the "sku" column.
I wrote the code:

import sys  
import pandas as pd  
import numpy as np  
import datetime  

df = pd.read_csv('cat0.csv')  

for r in df['sku']:  
    r1 = r.replace('k', '_')  
    df['sku'] = r1  

print (df) 

但是代码在"sku"列的每一行中插入了最后一个值.所以我得到:

But the code inserts the last value in every row of the "sku" column. So I get:

  sku name  code
0  _5  aaa   886
1  _5  bbb   898
2  _5  ccc   342
3  _5  ddd   503
4  _5  eee   401

我想要得到以下信息:

  sku name  code
0  _1  aaa   886
1  _2  bbb   898
2  _3  ccc   342
3  _4  ddd   503
4  _5  eee   401

推荐答案

您可以在整列中使用str.replace:

from io import StringIO
import pandas as pd

data = """sku,name,code  
k1,aaa,886  
k2,bbb,898  
k3,ccc,342  
k4,ddd,503  
k5,eee,401"""

file = StringIO(data)

df = pd.read_csv(file)
df['sku'] = df['sku'].str.replace('k', '_')

print(df)

这产生

  sku name  code  
0  _1  aaa     886
1  _2  bbb     898
2  _3  ccc     342
3  _4  ddd     503
4  _5  eee     401

这篇关于使用for循环替换pandas列的每一行中的单元格值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆