当panda列有空值时,如何将其转换为int?

2024-07-02 22:13:25 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我正在处理我的CSV文件,它在每个句子后面都有一个空白的单元格“”,如下图所示。你知道吗

当我打印列类型时使用:

print(data.dtypes)

我知道它们都是对象,但是我希望word\u id、head\u pred\u id、sent\u id和run\u id列是int64。你知道吗

当我使用转换列数据类型时:

data.word_id = data.word_id.astype(int)

我得到一个错误:基为10的int()的文本无效:“”

<> P>所以我认为空白间隔的单元格正在处理问题,所以我用NULL代替CSV文件本身。你知道吗

现在,4列类型自动设置为“Float64”,但是当我对它们执行某些操作时,会出现相同的错误: ValueError:基数为10的int()的文本无效:“”

<2>我仔细检查了是否有一个单元格丢失了,但是我没有漏掉任何一个空白的单元格都被设置为我的CSV文件中的NULL。你知道吗

下面是出现错误的代码片段:

def encode_inputs(sents):
        """
        Given a dataframe which is already split to sentences,
        encode inputs for rnn classification.
        Should return a dictionary of sequences of sample of length maxlen.
        """
        word_inputs = []
        pred_inputs = []
        pos_inputs = []


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


        run_id_to_pred = dict([(int(sent.run_id.values[0]),
                                get_head_pred_word(sent))
                               for sent in sents]) ***ERROR HERE****

这是变量“sents”,它被发送到上面的函数


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))]

Snippet of my CSV File


Tags: 文件csvruniddffordata错误
2条回答

这里面有强制的性质pd.数字()功能
data['word_id']= pd.to_numeric(data['word_id'], errors='coerce').astype(int)

如果有多列
1创建列列表
col =['word_id','head_pred_id']
df[col] = df[col].apply(lambda x :pd.to_numeric(x,errors='coerce').astype(int),axis=0)

首先将非数值(如空字符串)转换为NaNs,然后如果可以使用0.24+,则将列转换为integers

data.word_id = pd.to_numeric(data.word_id, errors='coerce').astype('Int64')

相关问题 更多 >