使用额外的训练列将数据集分为2部分

时间:2019-11-28 16:22:24

标签: python-3.x pandas numpy machine-learning

我在df数据集中总共有132行。如果我使用以下代码,它将在“ train”列中为我提供一个随机数的“ True”值。有时46或有时50,但我想在“火车” 列中将其精确设置为53 “真” 值和79 “假”

train_test_per = 60/100.0
df['train'] = np.random.rand(len(df)) < train_test_per

enter image description here

df['train'] = "condition"此处我必须使用的条件是什么

如果有人帮助我,那将是极大的荣幸。我已经尝试解决,但是由于我是新手,所以找不到合适的解决方案。

如果缺少任何信息,请告诉我。

3 个答案:

答案 0 :(得分:3)

为什么不像以前那样使用熊猫的sample

df['train'] = False
df.loc[df.sample(n=53).index, 'train'] = True

选项2 np.random.choice

train_idx = np.random.choice(df.index, size=53, replace=False)

df['train'] = False
df.loc[train_idx, 'train'] = True

答案 1 :(得分:1)

import random

true_false = [True if x < 53 else False for x in range(100)]
random.shuffle(true_false)
df["train"] = pd.Series(true_false)

编辑:Quang Hoang的回复比我的要好。我将我作为替代解决方案。

答案 2 :(得分:1)

另一种(丑陋的)方法可能是:

['cache or debit','credit or loan','leasing']

祝你好运!