考虑 df

df = pd.DataFrame(np.ones((10, 10)) * 2,
                  list('abcdefghij'), list('ABCDEFGHIJ'))
df

python - 在数据帧中随机消除值的最有效方法-LMLPHP

我怎样才能随机消除这些值的约 20%?

python - 在数据帧中随机消除值的最有效方法-LMLPHP

最佳答案

您可以使用 numpy.random.choice 生成 mask :

import numpy as np

mask = np.random.choice([True, False], size=df.shape, p=[.2,.8])

df.mask(mask)

在一行中:
df.mask(np.random.choice([True, False], size=df.shape, p=[.2,.8]))

使用 timeit 在 ~770μs 测试速度:
>>> python -m timeit -n 10000
        -s "import pandas as pd;import numpy as np;df=pd.DataFrame(np.ones((10,10))*2)"
        "df.mask(np.random.choice([True,False], size=df.shape, p=[.2,.8]))"
10000 loops, best of 3: 770 usec per loop

关于python - 在数据帧中随机消除值的最有效方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40224814/

10-12 23:24