python - Pandas 、 python 。替换列中值的随机子集

标签 python pandas random

我有一个数据框,其中特定列 (y1) 有 3 个可能的值:-9、1 和 2。

我想将 1000 个值的随机样本更改为 -9。

我已经尝试过这个:

df.loc[df.y1 == "2", 'y1'].sample(1000) =="-9"

但是它不起作用。

最佳答案

我认为你需要index首先更改值,然后分配:

过滤的行数a有问题小于 1000 ,所以min添加了 - 所以它返回长度 a如果length < 1000 :

a = df.loc[df.y1 == 2, 'y1']
df.loc[a.sample(min(len(a.index), 1000)).index, 'y1'] = -9

谢谢,John Galt为了更好的解决方案,如果可能的话没有2在专栏 y1 :

df.loc[(a if len(a.index) < 1000 else a.sample(1000)).index, 'y1'] = -9

关于python - Pandas 、 python 。替换列中值的随机子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45542422/

相关文章:

python - 在 Pandas Dataframe 中转换 HTML 表格

c - C 中的 Srand 与 char 数组?

python - 从 itertools 随机化链

r - 并行处理和临时文件

Python 在 for 循环中就地更新对象

python - 关于 python 如何进行 GC 的一些有趣的事情

python - 使用 matplotlib 条形图设置列的顺序

python - 将 pandas 数据帧条目扩展到相同的长度

python - 从 Python Google App Engine 连接到 Firebase

python - 用第二个 DF 填充 DF