python怎么把用新的列替换某列

Python014

python怎么把用新的列替换某列,第1张

1、通过列名来访问到该表格中的这个列,然后调用replace()方法来将其中的值给替换掉。

2、使用切片方式访问到指定列,不过需要调用loc这个表示行列的对象。

3、调用contains()方法检查列中是否有指定的值,有的话就将其进行替换处理。

python中快速进行多个字符替换的方法小结

先给出结论:

要替换的字符数量不多时,可以直接链式replace()方法进行替换,效率非常高;

如果要替换的字符数量较多,则推荐在 for 循环中调用 replace() 进行替换。

可行的方法:

1. 链式replace()

?

1   string.replace().replace()   

1.x 在for循环中调用replace() 「在要替换的字符较多时」

2. 使用string.maketrans

3. 先 re.compile 然后 re.sub

采取的算法是:将第一和除其之外的每个字母对比,相同即记下替换后的word,依次下推(第二和第三、第四。。。),逐个修改映射list

# coding:utf8

if __name__ == '__main__':

words = ['school','google','getfileinfo','cherrypy','pypy']

print words

tmps = words #映射list,存放替换大小写后的list

index = 0 #list遍历到第几个了

for wds in words: #遍历words

i = 0 #记录list下的每个word长度

j = 0 #记录每个word有几个相同的字母数

#下面采取的算法是:将第一和除其之外的每个字母对比,相同即记下替换后的word,依次下推(第二和第三、第四。。。),逐个修改映射list:tmps

for wd_a in wds[i:]:

for wd_b in wds[i+1:]:

if wd_a == wd_b:

# print wds, wd_a.upper()

j += 1

if j > 1: #相同字母超过一个的,需要沿用之前修改好的word,否则最后记录的将是最后一个相同字母转大写的word

tmp = tmp.replace(wd_a, wd_a.upper(), 1)

else:

tmp = wds.replace(wd_a, wd_a.upper(), 1)

# print tmp

tmps[index] = tmp  #修改映射list:tmps

i += 1

index += 1

print tmps

运行结果:

['school', 'google', 'getfileinfo', 'cherrypy', 'pypy']

['schOol', 'GOogle', 'gEtFIleinfo', 'cheRrYpy', 'PYpy']

算法二:

# coding:utf8

if __name__ == '__main__':

words = ['school','google','getfileinfo','cherrypy','pypy']

print words

tmps = words #映射list,存放替换大小写后的list

#算法二

#下面采取的算法是:先将单词序列化,然后排序,接着采取两两相比较,减少比较次数,同时遇到相同字母的就跳到下一组对比

index = 0

for word in words:

letters = []

for wd in word:

letters.append(wd)

letters.sort()

# print letters

j = 0

flag = False

for i in range(len(letters)-1):

if flag:

flag = False #重置跳过标记

continue #第一和第二位字母相同,那就没必要再比较第二和第三位字母了,直接跳过比较第三和第四位字母

# print letters[i],letters[i+1]

if letters[i] == letters[i+1]:

j += 1

if j > 1:

tmp = tmp.replace(letters[i], letters[i].upper(), 1)

else:

tmp = word.replace(letters[i], letters[i].upper(), 1)

# print tmp

tmps[index] = tmp

flag = True #jump flag

index += 1

print tmps

测试了下运行时间,words在145个时,运行时间对比:

Time2: 0.0160000324249

Time2: 0.0150001049042

Time2: 0.0149998664856

Time1: 0.0160000324249

Time1: 0.0159997940063

Time1: 0.0150001049042

可见算法二的最少运行时间比算法一少,要快