使用lambda函数添加数据帧列

2024-09-26 22:53:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用随机生成的两个大写字母的代码向Pandas数据框添加一列。对于随机代码生成,我编写了一个函数,但当我将其添加到数据帧时,结果只给出NaN。你知道怎么解决这个问题吗

import pandas as pd
import random
import string

def generateCode():
    return random.choice(string.ascii_uppercase) + random.choice(string.ascii_uppercase)

cars = {'Brand': ['Honda Civic','Toyota Corolla','Ford Focus','Audi A4'],
        'Price': [22000,25000,27000,35000]
        }
df = pd.DataFrame(cars, columns = ['Brand', 'Price'])

df['Code'] = df.apply(lambda x: generateCode())

print(df)

给出输出:

            Brand  Price Code
0     Honda Civic  22000  NaN
1  Toyota Corolla  25000  NaN
2      Ford Focus  27000  NaN
3         Audi A4  35000  NaN

谢谢你的帮助


Tags: 数据importdfstringasciirandomnancars
2条回答

使用^{}处理每个值:

df['Code'] = df['Brand'].apply(lambda x: generateCode())

print(df)
            Brand  Price Code
0     Honda Civic  22000   AY
1  Toyota Corolla  25000   EN
2      Ford Focus  27000   VN
3         Audi A4  35000   ZZ

^{}axis=1用于每行处理:

df['Code'] = df.apply(lambda x: generateCode(), axis=1)

print(df)
            Brand  Price Code
0     Honda Civic  22000   AY
1  Toyota Corolla  25000   EN
2      Ford Focus  27000   VN
3         Audi A4  35000   ZZ

别问我为什么,但这确实奏效了:

import pandas as pd
import random
import string

def generateCode():
    print(random.choice(string.ascii_uppercase) + random.choice(string.ascii_uppercase))
    return random.choice(string.ascii_uppercase) + random.choice(string.ascii_uppercase)

cars = {'Brand': ['Honda Civic','Toyota Corolla','Ford Focus','Audi A4'],
        'Price': [22000,25000,27000,35000]
        }
df = pd.DataFrame(cars, columns = ['Brand', 'Price'])

df['Code'] = df.Brand.map(lambda x: generateCode())

print(df)

如果有人能解释为什么会这样,我将不胜感激

相关问题 更多 >

    热门问题