所以我正在处理我的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))]
这里面有强制的性质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)
首先将非数值(如空字符串)转换为
NaN
s,然后如果可以使用0.24+,则将列转换为integers:相关问题 更多 >
编程相关推荐