pandas 更改单元格的值,使用for循环替换pandas列每行中的单元格值

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

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)

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

I want to get as following:

sku name code

0 _1 aaa 886

1 _2 bbb 898

2 _3 ccc 342

3 _4 ddd 503

4 _5 eee 401

解决方案

You can use str.replace on the whole column:

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)

This yields

sku name code

0 _1 aaa 886

1 _2 bbb 898

2 _3 ccc 342

3 _4 ddd 503

4 _5 eee 401

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值