使用for循环替换pandas列的每一行中的单元格值(Replace cell values in each row of pandas column using for loop)
请帮我理解我的错误。 我正在尝试更改.csv文件中的一列。 我有.csv文件如下:
sku,name,code k1,aaa,886 k2,bbb,898 k3,ccc,342 k4,ddd,503 k5,eee,401我想用“sku”列中的“_”符号替换“k”符号。 我写了代码:
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”列的每一行中插入最后一个值。 所以我得到:
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 401Please, 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,401I 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 401I 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最满意答案
您可以在整个列上使用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 401You 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更多推荐
发布评论