如何根据另一列的值在熊猫中获取新列?



我有一个包含列的多类数据集:

File_name     Label     Value.
abcd          A         74
bwld          B         72

我有 4 个唯一标签,我想创建一个名为"is_valid"的新列,它是一个布尔值,它将一个 true 值分配给每种标签类型的 10% 的数据。 本质上,我正在尝试为每个标签的 10% 创建一个 train-val 拆分,并创建一个列来显示该行是否已用于训练或验证,使其看起来像这样:

File_name     Label     Value      is_valid
abcd          A         74           True
bwld          B         72           False

我该怎么做?

我知道这可以使用火车测试拆分来完成,但我想将其用于演示:(

from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(file_name, label, 
test_size=0.2, random_state=40, stratify=label)
val_split = 0.1    
df['is_valid'] = False
for label in df['Label'].unique():
indexes = df[df['Label']==label].sample(frac=val_split)
df.loc[(indexes.index.values), 'is_valid'] = True

最新更新