【问题标题】:Masking each DataFrame Column using random.randint()使用 random.randint() 屏蔽每个 DataFrame 列
【发布时间】:2021-08-01 11:34:36
【问题描述】:

作为初学者和学生,我对 python 掩码感到好奇,所以我编写了以下代码:

import numpy as np
import pandas as pd
import random

A = [123, 321, 213]
B = [456, 546, 654]
C = [789, 987, 879]

lst = {
    "A":A,
    "B":B,
    "C":C}

df = pd.DataFrame(lst)

上面的代码产生了这个:

A   B   C

0 123 456 789

1 321 546 987

2 213 654 879

我制作了这段代码来屏蔽该列:

df['A'].mask(df['A']>1, np.random.randint(1,3))

现在将 A 列的值转换为:

0 1

1 1

2 1

但我想要一个想要的输出是这样的:

0 2

1 3

2 1

有可能吗?如果可以,可以指点一下吗?

【问题讨论】:

    标签: python pandas numpy jupyter-notebook


    【解决方案1】:
    df['A'].apply(lambda x: np.random.randint(1,4) if x > 1 else 0)
    

    这是一个随机结果,因此您在第一次尝试时可能不会得到[2,3,1]。如果你只想要这个而不是随机的,那么你必须改变种子并找到这个。

    幸好我帮你找到了,

    np.random.seed(90)
    df['A'].apply(lambda x: np.random.randint(1,4) if x > 1 else 0)
    
    0    2
    1    3
    2    1
    Name: A, dtype: int64
    
    

    【讨论】:

      猜你喜欢
      • 2013-10-23
      • 2021-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-02
      • 2019-11-25
      • 1970-01-01
      • 2022-01-10
      相关资源
      最近更新 更多