#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