python - 在文件中写入了一些变量名,需要使用 python 将其替换为新生成的随机值?

标签 python pandas

我想用为每个变量随机生成的变量替换 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)

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

最佳答案

您可以先获取"Not Available" 的数量,然后查找choices。使用列表中的 random.choices 而不是仅选择一个(random.choice 所做的):

not_availables = df.Sex.eq("Not Available")
num_not_availables = not_availables.sum()

choice_list = ["Male", "Female"]
new_values = random.choices(choice_list, k=num_not_availables)

df.loc[not_availables, "Sex"] = new_values

得到(例如)

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

关于python - 在文件中写入了一些变量名,需要使用 python 将其替换为新生成的随机值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67635809/

相关文章:

python - 从任意嵌套列表中随机采样,同时保持结构

python - 如何从 Frozen-Flask 有条件导入relative_url_for

python - Pandas DataFrame 到 HTML : Formatting the values to display centered

python - 当重复仅在第一列时,pandas 中 drop_duplicates

python - 使用 python-pptx 将 matplotlib 图形保存在 ppt 文件中,而不保存图形

python - .dat 文件导入 Pandas

python: sys.argv[0] 在官方文档中的意思

python-3.x - Pandas If 语句(excel 等效)

python - 将 Pandas DataFrame 转换为 Orange Table

Python Pandas 数据框行条目无法按条件进行比较