python - 在 pandas 中插入一个带有随机字符串值的新列
问题描述
我有一个数据框
A B C
0 1 2 3
1 2 3 3
2 3 2 1
我需要在 pandas DataFrame 中创建一个新列,并随机填充“是”或“否”。
A B C NEW
0 1 2 3 yes
1 2 3 3 no
2 3 2 1 no
使用 random.choice 会产生一列,每一行的结果都相同
A B C NEW
0 1 2 3 no
1 2 3 3 no
2 3 2 1 no
我尝试了 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)
random.choices将为每一行选取其中一个值。
weights分别设置选择“是”或“否”的概率。如果您希望获得更高的“是”机会,即,您必须增加第一个数字。
k设置系列的长度。它必须具有相同的 DataFrame 长度。
index将其设置为与 df.index 相同很重要,否则无论您是否从更大的 Dataframe 中对其进行切片,它都可以填充 Nan
推荐阅读
- javascript - 节点:无法通过 API 解析 JSON
- javascript - Javascript 中的灯泡无法打开
- java - JavaEE 和 Firebase admin sdk - setValueAsync 不将数据推送到实时 Firebase
- javascript - 使用不变性帮助程序更新功能不更新反应状态
- ffmpeg - 如何使用 ffmpeg 从电视节目 DVD 中提取奖励图像?
- python-3.x - python3读取大文件耗尽内存
- spring - 在 Spring MVC 中,Bean 名称“modelform”的 BindingResult 和普通目标对象都不能用作请求属性。请指教
- angular - Angular 与谷歌标签管理器
- pandas - 根据其他列替换数据框的特定单元格值
- java - 如何将值列表填充到数据库中的 Checkcombobox (ControlsFX)