【问题标题】:How to ignore Null values in a CSV columns with pandas while processing the text?如何在处理文本时忽略带有熊猫的 CSV 列中的 Null 值?
【发布时间】:2019-06-20 08:15:41
【问题描述】:

我有一个 CSV 文件,句子中的每个单词都用单元格表示,每个句子之间有一个空单元格。

我的问题在 run_id 列中,在我使用 pandas 加载 csv 文件后,我使用函数“从 df 发送”分隔每个句子,但我有一行断言仔细检查run_id 是唯一的并且 =1 但它失败了,因为它将“Null”作为“Null 句子”

下面是我的sn-p代码,希望对你有帮助

注意:我正在研究 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))]

send 0 的形状是 (10,8) 是正确的,sent[0] 是正确的

但是 send1 的形状是 (0,8),当然 sent1 没有打印,因为它为空,我应该 send1 shape = (6,8) 有什么帮助吗?

打印语句的输出图像:

【问题讨论】:

  • [check image below] : 没有图像,除此之外,最好发布输入数据的样本
  • 是的,我添加了它。
  • 你能发布输出吗?
  • @SebastienD 发布了输出图像
  • 首先,总是更喜欢代码而不是屏幕截图。其次,你的代码应该做什么?期望的输出是什么?

标签: python pandas csv nlp


【解决方案1】:

要跳过空白行(其中包含 None 值和空字符串),为什么不这样做:

df = df[df.word.apply(lambda x : len(x)>0)]

【讨论】:

    猜你喜欢
    • 2022-12-07
    • 2020-01-06
    • 2018-07-28
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    • 2019-11-30
    • 1970-01-01
    • 2019-12-03
    相关资源
    最近更新 更多