Pandas:随机化列中的字母

2023-12-28

我有一个如下所示的数据框:

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(使用前将#替换为@)

Pandas:随机化列中的字母 的相关文章

随机推荐