【问题标题】:I want to add randomly a to z in columns using loops.how can i do this?我想使用循环在列中随机添加 a 到 z。我该怎么做?
【发布时间】:2020-07-20 23:47:31
【问题描述】:

我想使用循环在列中随机添加 a 到 z。我该怎么做?

我想使用循环在列中随机添加 a 到 z。我该怎么做? 例子: 这是我的专栏 姓名 0 蒂姆 1 麻省理工学院 2杰森 3 贾西姆 4 西布尔 预期成绩: 姓名 0 蒂玛 1个 2杰森克 3 贾西姆 4 Siblex

【问题讨论】:

    标签: pandas dataset rows


    【解决方案1】:
    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
    

    【讨论】:

    • 我想给出一个范围。我该怎么做?
    • @tosifulislam 你所说的范围是什么意思?
    • 假设我的列有 1000 个数据。我想随机添加字母到只有 200 个数据。
    • address 列是什么?您的示例 df 只有 name 但这将适用于任何具有字符串数据类型的列
    • 我的地址栏也是字符串
    【解决方案2】:

    我不会在这里使用循环;您可以使用内部带有 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))
    

    【讨论】:

    • 但我想在我的数据中随机添加字母。但是您的代码将字母添加到我的所有数据中。
    • 那么最好的解决方案就是上面克里斯的回答。
    猜你喜欢
    • 1970-01-01
    • 2020-09-16
    • 2022-12-06
    • 1970-01-01
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    相关资源
    最近更新 更多