我有一个如下所示的数据框:
id1 | id2
----------------------------
ab51c-ee-1a | cga--=%abd21
我只想随机化字母:
id1 | id2
----------------------------
ge51r-eq-1b | olp--=%cqw21
我想我可以做这样的事情:
newid1 = []
for index, row in df.iterrows():
string = ''
for i in row['id1']:
if i.isalpha():
string+=random.choice(string.letters)
else:
string+=i
newcolumn.append(string)
但似乎效率不是很高。有没有更好的办法?
让我们使用apply
,凭借str.replace
使用正则表达式仅替换字母,即
import string
import random
letters = list(string.ascii_lowercase)
def rand(stri):
return random.choice(letters)
df.apply(lambda x : x.str.replace('[a-z]',rand))
Output :
id1 id2
0 gp51e-id-1v jvj--=%glw21
对于某一特定列的用途
df['id1'].str.replace('[a-z]',rand)
添加者@antonvbr https://stackoverflow.com/users/7386332/anton-vbr:供将来参考,如果我们想更改大小写,我们可以这样做:
letters = dict(u=list(string.ascii_uppercase),l=list(string.ascii_lowercase))
(df['id1'].str.replace('[a-z]',lambda x: random.choice(letters['l']))
.str.replace('[A-Z]',lambda x: random.choice(letters['u'])))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)