Метод Dataframe.sample не возвращает правильные индексы - PullRequest
1 голос
/ 05 апреля 2020

Я пытаюсь создать несколько подмножеств из одного набора данных. это в моем коде:

def create_subdatasets(data, number_of_subdataset):
    subset_len = int(round(len(data))/number_of_subdataset)
    subsets = []
    while (len(data)>0):
        subset = data.sample(subset_len)
        subsets.append(subset)
        data = data.drop(data.index[subset.index])
    return subsets

но есть эта ошибка:

--------------------------------------------------------------------------- IndexError                                Traceback (most recent call last) <ipython-input-95-587e16cc1433> in <module>
      2 data2 = data
      3 data2 = data2.reset_index()
----> 4 subsets = create_subdatasets(data2, number_of_subdataset)
      5 print(len(subsets))

<ipython-input-94-3f8ca422541f> in create_subdatasets(data, number_of_subdataset)
      6         print(subset.index)
      7         subsets.append(subset)
----> 8         data = data.drop(data.index[subset.index])
      9         #data = data.reset_index()
     10     return subsets

~/anaconda3/envs/tf-gpu/lib/python3.6/site-packages/pandas/core/indexes/base.py in __getitem__(self, key)    4289     4290         key = com.values_from_object(key)
-> 4291         result = getitem(key)    4292         if not is_scalar(result):    4293             return promote(result)

IndexError: index 5068 is out of bounds for axis 1 with size 4995

Я понимаю, что индексы подмножества данных отличаются от индексов объектов данных, я думаю, что эта проблема связана с к методу примера, я не уверен, правильно ли это или нет. Может кто-нибудь, пожалуйста, помогите мне решить эту ошибку.

1 Ответ

0 голосов
/ 05 апреля 2020

Ваша проблема возникает из-за того, что вы пытаетесь поднастроить свой data.index, используя индексные метки.

Измените эту строку:

data = data.drop(data.index[subset.index])

на

data = data.drop(subset.index)

Однако, если ваш фрейм данных не разделен и не равен точно, вы столкнетесь с «ValueError: Невозможно взять большую выборку, чем совокупность, когда следующая ошибка« replace = False »».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...