含空值的Pandas列转int64类型报错及代码执行异常求助
解决CSV空值引发的类型转换&
int()报错问题 嘿,我帮你梳理下问题根源和解决办法:你遇到的核心问题是数据里的空值(空格、空字符串、NaN)没被彻底处理干净,导致转整数时触发报错。咱们一步步来搞定:
第一步:别手动改CSV!用代码统一预处理空值
手动替换空格为NULL很容易漏处理,建议读取CSV时就把所有空白类内容都识别成NaN:
import pandas as pd # 读取时,把空格、空字符串都标记为NaN df = pd.read_csv("你的文件.csv", na_values=[" ", ""]) # 先检查目标列的空值情况,心里有数 print("各列空值统计:") print(df[["word_id", "head_pred_id", "sent_id", "run_id"]].isna().sum())
第二步:处理空值+转换类型
因为int64不支持NaN,你有两个可选方案:
方案1:删掉带空值的行(如果这些是无效数据)
如果空值对应的行是没用的,直接删掉最省心:
# 只保留目标列无空值的行 clean_df = df.dropna(subset=["word_id", "head_pred_id", "sent_id", "run_id"]) # 批量转int64 for col in ["word_id", "head_pred_id", "sent_id", "run_id"]: clean_df[col] = clean_df[col].astype("int64") # 验证类型是否正确 print(clean_df.dtypes)
方案2:用占位符填充空值(如果空值需要保留)
如果空值是有业务意义的(比如代表缺失的ID),可以用合理值填充:
# 用0填充空值(你可以根据业务换成其他值,比如-1) filled_df = df.fillna({ "word_id": 0, "head_pred_id": 0, "sent_id": 0, "run_id": 0 }) # 转类型 for col in ["word_id", "head_pred_id", "sent_id", "run_id"]: filled_df[col] = filled_df[col].astype("int64")
第三步:修复报错的代码片段
如果你的run_id还是Float64类型(因为有NaN),提取run_id.values[0]会得到nan,转int()必报错。可以加个检查逻辑:
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 = [] run_id_to_pred = dict() for sent in sents: run_id_val = sent.run_id.values[0] # 先检查是不是NaN,是的话跳过或者做其他处理 if pd.isna(run_id_val): print(f"警告:发现空的run_id,跳过该句子") continue # 处理Float转int的情况 run_id_int = int(run_id_val) if isinstance(run_id_val, float) else run_id_val run_id_to_pred[run_id_int] = get_head_pred_word(sent) # 记得返回需要的结果,原代码里好像漏了? return { "word_inputs": word_inputs, "pred_inputs": pred_inputs, "pos_inputs": pos_inputs, "run_id_to_pred": run_id_to_pred }
额外排查:有没有隐藏的空白字符?
如果还是报错,检查下run_id列是不是有多个空格的字符串:
# 查看run_id的所有唯一值,找异常 print("run_id的唯一值:") print(df["run_id"].unique()) # 清理所有首尾空白,再把空字符串转成NaN df["run_id"] = df["run_id"].str.strip().replace("", pd.NA)
内容的提问来源于stack exchange,提问作者IS92
相关产品推荐
相关产品推荐

