Замена переменных в csv на случайно сгенерированную переменную

#python #csv #random

#python #csv #Случайный

Вопрос:

Я хочу заменить переменные в файле 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:

Вы можете сгенерировать список со случайными «мужскими» и «женскими» с помощью 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