Как игнорировать нулевые значения в столбцах CSV с пандами при обработке текста? - PullRequest
1 голос
/ 20 июня 2019

У меня есть файл CSV, и каждое слово в предложении представлено в ячейке, с нулевой ячейкой между каждым предложением.

CSV snippet file

Моя проблема в столбце run_id , после того, как я загружаю файл csv с помощью панд, я разделяю каждое предложение с помощью функции "getотправлено с df ", но у меня есть строка утверждения, что двойная проверка, что run_id уникален и = 1, но не удается, потому что он принимает" Null "в качестве" нулевого предложения "

Ниже приведен фрагмент моегокод, я надеюсь, вы можете помочь

Примечание: я работаю над T = "test_RE"

def load_dataset(fn,T):

            if T=="test_RE":
          df = pandas.read_csv(fn,
                         sep= ";",
                         header=0,
                         keep_default_na=False)
          df.drop(df.columns[df.columns.str.contains('unnamed',case = False)],axis = 1, inplace = True)
          df.word_id = pd.to_numeric(df.word_id, errors='coerce').astype('Int64')
          df.run_id = pd.to_numeric(df.run_id, errors='coerce').astype('Int64')
          df.sent_id = pd.to_numeric(df.sent_id, errors='coerce').astype('Int64')
          df.head_pred_id = pd.to_numeric(df.head_pred_id, errors='coerce').astype('Int64')
      else:
            df = pandas.read_csv(fn,
                         sep= "\t",
                         header=0,
                         keep_default_na=False)
      print (df.dtypes)

      if T=="train":
        encoder.fit(df.label.values)
        print('this is the IF cond')
        print('df.label.values. shape',df.label.values.shape)

      sents = get_sents_from_df(df)

      print('shape of sents 0',sents[0].shape)
      print('sents[0]',sents[0])
      print('shape of sents 1',sents[1].shape)
      print('sents[1]',sents[1])

      #make sure that all sents agree on run_id

                assert(all([len(set(sent.run_id.values)) == 1
                    for sent in sents])) **ERROR HERE**

функция

def get_sents_from_df( df):

      #Split a data frame by rows accroding to the sentences
      return [df[df.run_id == run_id]
            for run_id
            in sorted(set(df.run_id.values))]

формаотправлено 0 - это (10,8), что правильно, а отправлено [0] правильно

, но форма отправления 1 - (0,8) и, конечно, отправлено 1 не печатается, потому что это ноль, я должен был отправить 1 shape = (6,8) любую помощь?

Изображение вывода операторов печати:

Output of print stsatemts

1 Ответ

1 голос
/ 20 июня 2019

Чтобы пропустить пустые строки (которые содержат как значения None, так и пустые строки), почему бы просто не сделать:

df = df[df.word.apply(lambda x : len(x)>0)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...