用随机生成的变量替换csv中的变量

时间:2020-11-10 13:48:24

标签: python csv random

我想用每个变量随机生成的变量替换CSV文件中的变量。

例如,将“不可用”更改为“男性”或“女性”

示例:

Number    Sex
0         Female
1         Male
2         Not Available
3         Male
4         Not Available

收件人:

Number    Sex
0         Female
1         Male
2         Female
3         Male
4         Male

我现在拥有的代码是:

import pandas as pd
import random

def RandomSex():
    return random.choice(['Male','Female'])



df = pd.read_csv(r'data.csv')
df2 = df.loc[: , 'Sex']
print(df2)
df.loc[(df.Sex == 'Not Available'),'Gender'] = RandomSex()
print(df2)

但这会将所有“不可用”更改为全部“男性”或全部“女性”

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您可以使用numpy生成一个随机包含“男性”和“女性”的列表:

import numpy as np
sex_unavailable = df[df.Sex == "Not Available"]
random_genders = np.random.choice(["Male","Female"], len(sex_unavailable))]
df.loc[(df.Sex == "Not Available"), "Gender"] = random_genders

如果您需要使用原始性别值预填充“性别”列,则可以在最终分配之前执行此操作:

df["Gender"] = df["Sex"]

或者,如果您只想覆盖“性别”列:

df.loc[(df.Sex == "Not Available"), "Sex"] = random_genders