随机分配大Pandas数据帧

2024-03-28 19:25:50 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我们有一个数据帧

In [1]: df = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))

In [2]: df
Out[3]:
     A   B   C   D
0   45  88  44  92
1   62  34   2  86
2   85  65  11  31
3   74  43  42  56
4   90  38  34  93
5    0  94  45  10
..  ..  ..  ..  ..

如何将x%的所有条目随机替换为一个值,例如None?在

^{pr2}$

我已经找到了关于采样特定轴的信息,我可以想象一种在数据帧的维度内随机生成整数并将其设置为None的方法,但这并不是一种很典型的方法。在

  • 编辑:忘记了标题中的“方式”

Tags: columns数据方法innonedataframedfsize
1条回答
网友
1楼 · 发布于 2024-03-28 19:25:50

您可以将DataFrame.wherenp.random.uniform组合起来:

In [37]: df
Out[37]: 
   A  B  C  D
0  1  0  2  2
1  2  2  0  3
2  3  0  0  3
3  0  2  3  1

In [38]: df.where(np.random.uniform(size=df.shape) > 0.3, None)
Out[38]: 
      A  B     C     D
0     1  0     2  None
1     2  2     0     3
2     3  0  None  None
3  None  2     3  None

它不是最简洁的,但能完成任务。在

但是请注意,如果您还有计算要做,您应该问问自己是否真的想这样做。如果在列中没有输入任何内容,那么pandas将不得不使用slow object dtype,而不是像int64或float64这样的快速对象。在

相关问题 更多 >