Python Pandas:平均分配字符串列

时间:2018-11-07 15:35:58

标签: python pandas numpy

我有300000个字符串的pandas列。它由19个唯一的字符串组成。现在,我只想选择说该列的5000个元素,但每个字符串应均等出现。当然,这受到该列中字符串出现的最小/最大次数的限制。

我想也许我可以使用pandas.facotrize,但是我真的不知道如何遮盖该列。我是否不知道有一个numpy / pandas函数?

如果我将字符串分解,它就像:

strings=np.random.randint(19, size=300000)

现在,我可以用某种方式屏蔽该数组,以使每个数字均等出现,并且“ Trues”的数量为5000。理想的模式是:如果我也可以给出其中一个字符串出现在另一个字符串上的因素,但这仅用于添加。

1 个答案:

答案 0 :(得分:1)

设置

   public void add(Tag tag1, Tag tag2) {
        tag1.collisions.Add(tag2);
        tag2.collisions.Add(tag1);
    }

    public void remove(Tag tag1, Tag tag2) {
      if (collidesWith(tag1,tag2)) {
        tag1.collisions.remove(tag2);
        tag2.collisions.remove(tag1);
      }  
    }

    public boolean collidesWith(Tag tag1, Tag tag2) {
        if (tag1.collisions.Contains(tag2) && tag2.collisions.Contains(tag1)) {
           return true;
        }
        return false;
    }

np.random.seed([3, 1415]) n = 300_000 strings = np.random.choice([*'ABCDEFGHIJKLMNOPQRS'], size=n) df = pd.DataFrame(dict(Col=strings))

弄清楚您需要的实际数量,然后从每个组中进行采样

pandas.DataFrame.sample