TypeError: объект типа не имеет len () при использовании Pandas Dataframe - PullRequest
0 голосов
/ 15 февраля 2020

Я попробовал следующий код

import pandas as pd
import os
from torch.utils.data import Dataset
from torch.utils.data import Dataset, DataLoader

class ArticleDataset(Dataset):
   def __init__(self):
    #  super().__init__()
     df= pd.read_csv('https://drive.google.com/uc?export?format=csv&=download&id=*********', sep = "delimiter", index_col=0, header=None, engine='python')

     self.articles_list=df

     def __len__(self):
        return len(self.articles_list)

     def __getitem__(self, item):
        return self.articles_list.index[item]

Фрейм данных содержит данные и печатает данные при выполнении df.head (). Но выдает ошибку

TypeError                                 Traceback (most recent call last)
<ipython-input-74-08e914e52560> in <module>()
      1 dataset =ArticleDataset()
----> 2 article_loader=DataLoader(dataset, batch_size=1, shuffle=True)

2 frames
/usr/local/lib/python3.6/dist-packages/torch/utils/data/sampler.py in num_samples(self)
     98         # dataset size might change at runtime
     99         if self._num_samples is None:
--> 100             return len(self.data_source)
    101         return self._num_samples
    102 

TypeError: object of type 'ArticleDataset' has no len()

при выполнении

dataset =ArticleDataset()
article_loader=DataLoader(dataset, batch_size=1, shuffle=True)

.

Но согласно правильному ответу, найденному в здесь , len (DataFrame.index) дает мне ожидаемое нет. строк в Dataframe, а также. И df.index 1 печатает первую строку Dataframe, но не может выяснить, что не так.

Я также пытался превратить фрейм данных в список, но была выдана та же ошибка , Возможно, в коде есть какая-то ошибка, которую я не вижу, и я новичок в python. Любая помощь приветствуется.

Редактировать (после однократного отступа):

import pandas as pd
import os
from torch.utils.data import Dataset
from torch.utils.data import Dataset, DataLoader

class ArticleDataset(Dataset):
   def __init__(self):
    #  super().__init__()
     df= pd.read_csv('https://drive.google.com/uc?export?format=csv&=download&id=*******', sep = "delimiter", index_col=0, header=None, engine='python')

     self.articles_list=df

    def __len__(self):
        return len(self.articles_list)

    def __getitem__(self, item):
        return self.articles_list.index[item]

, это приведет к следующей ошибке

File "<ipython-input-104-165bbc37826a>", line 13
    def __len__(self):
                      ^
IndentationError: unindent does not match any outer indentation level
...