我想做一个随机函数来选择随机参与者进入游戏。基本上我的逻辑是:python - 为什么使用random.choice()时会出现这个键错误:0?
-
随机
- 从数据帧柱(使用random.choice())
- 涂黑名称通过用NaN的
- 重新运行
替换它选择1名对于第二次运行,使用random.choice方法时出现Key Error:0。我可以通过使用tolist()将其更正为列表来纠正它。
让我说明我通过以下代码的意思是:
import pandas as pd
import numpy as np
from random import choice
df = pd.DataFrame({'name':['Andy', 'Jack', 'Anne']})
for i in range(1,100):
c_name = choice(df.name.dropna())
df.name.replace(c_name, np.NaN, inplace=True) #Let's say Andy is replaced
# up until here it will work fine
# Trying the 2nd run
for i in range(1,100):
c_name = choice(df.name.dropna())
# !will output Key Error : 0
# if I do this: c_name = choice(df.name.dropna().tolist()) it will be fine.
# if the NaN value is at the last index, it is also fine.
我的问题是,为什么这样的行为random.choice()
?我已经使用dropna()删除了NaN值,它应该作为没有NaN的一系列名称。
为什么不使用样品? https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.sample.html 应该一气呵成你想要的一切 –
这是另一个很棒的解决方案。没有理由,我不知道有一个示例函数。不过我想知道为什么'random.choice()'是这样表现的。 – addicted
不运行你的代码:你为什么运行你的循环100次以获得一个名字? c_name将始终是最后一个循环的结果。 我不知道如何选择与数据框相结合的行为。我知道如何使用列表,但可能是差异 –