Больше строк, чем предполагалось при вызове DataFrames по индексу - PullRequest
0 голосов
/ 02 октября 2019

У меня есть два разных файла. z_df и s_df. Их первый столбец одинаков (это время). Каждая строка является уникальным моментом времени.

Теперь я хочу построить классификатор для z_df и s_df отдельно. Это хорошо. Но проблема в том, что я хочу использовать ту же индексацию для их обучения и тестирования. Например, если первые четыре строки z_df были выбраны для обучения, то должны быть также выбраны первые 4 строки s_df.

    z_df.shape, s_df.shape:
   ((450865, 5), (450865, 930))

   train_df, test_df = train_test_split(z_df, test_size=TEST_SIZE, shuffle=True )



    train_df.shape:
    (315605, 5)


    m=train_df[0].tolist()
    len(m), train_df.shape:
    (315605, (315605, 5))

    s_train=s_df[s_df[0].isin(m)]
    s_train.shape, train_df.shape:
    ((362774, 930), (315605, 5))

Как видите, количество строк для s_train отличается от количества строк в train_df. Почему?? Я использовал первый столбец, чтобы позвонить им. Почему это происходит? Что я делаю не так?

1 Ответ

1 голос
/ 02 октября 2019

Скорее всего, потому что ваш s_df[0] содержит дубликаты. Это может быть подтверждено len(s_df[0]) == len(s_df[0].unique()).

Для выборки обоих наборов данных:

is_train = np.random.choice((True, False), size=len(s_df), p=(0.7, 0.3))

s_train, z_train = s_df[is_train], z_df[is_train]
s_test, z_test = s_df[~is_train], z_df[~is_train]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...