Python 对每行分别应用一个函数

Python 对每行分别应用一个函数,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我编写了一个小函数来生成一个固定长度的随机字符串。我想将其应用于数据框a创建一个新列,其中该列的每一行都有一个固定长度的新字符串: import random, string def random_string(length): letters = string.printable return ''.join(random.choice(letters) for i in range(length)) df['random_string'] = random_string(

我编写了一个小函数来生成一个固定长度的随机字符串。我想将其应用于数据框a创建一个新列,其中该列的每一行都有一个固定长度的新字符串:

import random, string

def random_string(length):
    letters = string.printable
    return ''.join(random.choice(letters) for i in range(length))

df['random_string'] = random_string(40)
但是,以这种方式应用它会导致为整个列生成一个随机字符串。如果您有任何关于如何应用函数的帮助,其中每一行都有一个新生成的字符串,我们将不胜感激

试试这个:

df['random_string'] = [random_string(40) for _ in range(df.shape[0])]
您需要创建一个随机字符串列表,而不是将列设置为单个随机字符串的标量值。您的代码实际上是在执行
df['colname']='A'

另一种方式:

df['random_string'] = df.apply(lambda x: random_string(40), axis=1)
请尝试以下方法:

df['random_string'] = [random_string(40) for _ in range(df.shape[0])]
您需要创建一个随机字符串列表,而不是将列设置为单个随机字符串的标量值。您的代码实际上是在执行
df['colname']='A'

另一种方式:

df['random_string'] = df.apply(lambda x: random_string(40), axis=1)