ランダムな参加者をゲームに選ぶためのランダム化機能を作ろうとしています。基本的に私のロジックがある:python - random.choice()を使用すると、なぜこのKey Error:0が得られますか?
- ランダム(random.choiceを(使用))データフレーム列から1名を選択
- ブラックその名前うちのNaN
- 再実行
でそれを置き換えることによって私の2回目の実行では、random.choiceメソッドを使用しているときにキーエラー: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回実行して1つの名前を得るのですか? c_nameは常に最後のループの結果になります。 データフレームと組み合わせた選択肢がどのように動作するかわかりません。私はリストを扱う方法を知っています - それはおそらく差分です –