gpt4 book ai didi

python - 如何将具有 NULL 值的 panda 列转换为 int?

转载 作者:行者123 更新时间:2023-12-04 19:52:27 24 4
gpt4 key购买 nike

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

当我打印列类型时使用:

print(data.dtypes)

我知道它们都是对象,但我希望列 word_id、head_pred_id、sent_id 和 run_id 为 int64。

当我使用以下方法转换列数据类型时:

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

我得到一个错误:invalid literal for int() with base 10:' '

所以我认为空白单元格造成了问题,所以我在 CSV 文件本身中将它们替换为 NULL。

现在 4 列类型自动设置为“Float64”,但是当我对它们执行某些操作时,我得到了同样的错误: ValueError:以 10 为底的 int() 的无效文字:''

我仔细检查了是否有我遗漏的单元格,但我没有遗漏任何空白单元格在我的 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

最佳答案

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

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

关于python - 如何将具有 NULL 值的 panda 列转换为 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56665623/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com