A N*_*eto 2 python random series dataframe pandas
我有一个数据框
A B C
0 1 2 3
1 2 3 3
2 3 2 1
Run Code Online (Sandbox Code Playgroud)
我需要在 pandas DataFrame 中创建一个新列,并随机填充此列中的“是”或“否”。
A B C NEW
0 1 2 3 yes
1 2 3 3 no
2 3 2 1 no
Run Code Online (Sandbox Code Playgroud)
使用 random.choice 会导致每一行的结果都相同的列
A B C NEW
0 1 2 3 no
1 2 3 3 no
2 3 2 1 no
Run Code Online (Sandbox Code Playgroud)
我尝试了 map、apply 和 applymap 但有更简单的方法。
您必须设置新列才能pd.Series使用random.choices:
import random
df['NEW'] = pd.Series(
random.choices(['yes', 'no'], weights=[1, 1], k=len(df)),
index=df.index
)
Run Code Online (Sandbox Code Playgroud)
random.choices将为每一行选取其中一个值。
weights分别设置选择“是”或“否”的概率。如果您希望获得更高的“是”机会,则必须增加第一个数字。
k设置系列的长度。它必须具有相同长度的 DataFrame。
index设置为相同很重要,df.index否则无论您是否从更大的 DataFrame 中切分它,它都会填充 NaN