Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果标识符在范围内,则选择列车数据_Python_Pandas_Numpy - Fatal编程技术网

Python 如果标识符在范围内,则选择列车数据

Python 如果标识符在范围内,则选择列车数据,python,pandas,numpy,Python,Pandas,Numpy,我有83家公司的数据库。我选择80%的公司作为具有以下代码的列车组: mask = np.random.rand(83) <0.8 df['gvkey'].drop_duplicates()[mask] The outcome: 24 2086 48 3011 76 5020 88 6266 100 6730 ... 880 156617 890 157954 902 160607 917

我有83家公司的数据库。我选择80%的公司作为具有以下代码的列车组:

mask = np.random.rand(83) <0.8
df['gvkey'].drop_duplicates()[mask] 
The outcome:

24       2086
48       3011
76       5020
88       6266
100      6730
        ...  
880    156617
890    157954
902    160607
917    164266
926    264414
Name: gvkey, Length: 67, dtype: int64 
感谢您的帮助。

您可以使用在通过
删除重复项获得的唯一gvkey上仅选择67个gvkey,然后使用和
astype
获得1(如果gvkey位于样本的67中),否则为0

df['train'] = df['gvkey'].isin(df['gvkey'].drop_duplicates()
                                 .sample(n=67).to_numpy()).astype(int)
请注意,在
sample
中,可以使用
frac=0.8
而不是
n=67
,但在这种情况下,它只选择66个值

编辑:很抱歉,我把事情弄混了,意识到你想要的是训练和测试,而不是1和0,所以类似,你可以这样做

df['train'] = np.where(df['gvkey'].isin(df['gvkey'].drop_duplicates()
                                  .sample(n=67).to_numpy()), 
                       'train','test')
也就是说,在本列中包含1或0以后会更容易使用。

您可以使用在使用
删除重复项获得的唯一gvkey上仅选择67个gvkey,然后使用和
astype
获得1(如果gvkey位于样本的67中),否则为0

df['train'] = df['gvkey'].isin(df['gvkey'].drop_duplicates()
                                 .sample(n=67).to_numpy()).astype(int)
请注意,在
sample
中,可以使用
frac=0.8
而不是
n=67
,但在这种情况下,它只选择66个值

编辑:很抱歉,我把事情弄混了,意识到你想要的是训练和测试,而不是1和0,所以类似,你可以这样做

df['train'] = np.where(df['gvkey'].isin(df['gvkey'].drop_duplicates()
                                  .sample(n=67).to_numpy()), 
                       'train','test')

也就是说,在本专栏中使用1或0以后会更容易使用。

谢谢Ben,它完全满足了我的需要。第一个0和1就足够了。我只需要区分两者。谢谢Ben,这正是我想要的。第一个0和1就足够了。我只需要区分两者。