【发布时间】:2020-07-20 23:47:31
【问题描述】:
我想使用循环在列中随机添加 a 到 z。我该怎么做?
我想使用循环在列中随机添加 a 到 z。我该怎么做? 例子: 这是我的专栏 姓名 0 蒂姆 1 麻省理工学院 2杰森 3 贾西姆 4 西布尔 预期成绩: 姓名 0 蒂玛 1个 2杰森克 3 贾西姆 4 Siblex【问题讨论】:
我想使用循环在列中随机添加 a 到 z。我该怎么做?
我想使用循环在列中随机添加 a 到 z。我该怎么做? 例子: 这是我的专栏 姓名 0 蒂姆 1 麻省理工学院 2杰森 3 贾西姆 4 西布尔 预期成绩: 姓名 0 蒂玛 1个 2杰森克 3 贾西姆 4 Siblex【问题讨论】:
import numpy as np
import string
# create a list of characters
choice_list = list(string.ascii_lowercase)
# generate sudo random letter from the list
rand = np.random.choice(choice_list, len(df))
# append strings
df['name_new'] = df['name'].values + rand
name name_new
0 Tim Tima
1 Mit Mite
2 Jason Jasonz
3 Jasim Jasimp
4 Sible Siblec
import numpy as np
import string
# create a list of characters
choice_list = list(string.ascii_lowercase)
# create a rand sample of your dataframe
random_sample = df['name'].sample(3) # your sample size
# generate sudo random letter from the list
rand = np.random.choice(choice_list, len(random_sample))
# append strings using iloc
df.iloc[random_sample.index, 0] = random_sample.values + rand
name
0 Timy
1 Mitp
2 Jasony
3 Jasim
4 Sible
【讨论】:
address 列是什么?您的示例 df 只有 name 但这将适用于任何具有字符串数据类型的列
我不会在这里使用循环;您可以使用内部带有 lambda 函数的 .apply() 调用获得相同的结果。 .apply() 对您的每一行数据执行相同的函数,而 lambdas 允许您创建匿名函数。
如果您有一个包含所有要添加的字母的字符串,则可以使用 random 模块中的 choice 函数随机选择一个字母并将其添加到字符串中。
lambda 函数如下所示:lambda x: x + choice(letters)。本质上,它表示对于任何值 x,它将返回 x 加上一个随机选择的字母。
假设您的姓名列名为data,以下是上述示例:
from random import choice
letters = "abcdefghijklmnopqrstuvwxyz"
data.apply(lambda x: x + choice(letters))
【讨论】: