我想用每个变量随机生成的变量替换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)
但这会将所有“不可用”更改为全部“男性”或全部“女性”
感谢您的帮助!
答案 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