You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Numpy数组导出CSV时True/False显示为大写的问题排查

问题:Numpy数组转CSV后布尔字符串大小写异常

问题详情

我对Numpy数组y_pred执行了如下处理:

y_pred=y_pred.astype('|S5')
for i in range(len(y_pred)):
  if y_pred[i]==b"1":
    y_pred[i]="True"
  elif y_pred[i]==b"0":
    y_pred[i]="False"
y_pred=y_pred.astype(str)

print(y_pred)

combined_data = pd.DataFrame({'PassengerId': df2['PassengerId'], 'Transported': y_pred})
combined_data.to_csv('predictions_logistic.csv', index=False)

控制台输出为:['True' 'True' 'True' ... 'True' 'True' 'False']

但打开生成的predictions_logistic.csv文件后,发现Transported列显示的是TRUE和FALSE,而非预期的True和False。请问这是因为被识别为布尔类型导致的吗?还是DataFrame或to_csv方法存在问题?请帮忙解决。

原因分析

核心原因是Pandas的类型自动推断机制:尽管你把数组转成了字符串类型,但'True'/'False'字符串会被Pandas识别为布尔值的等价表示,在写入CSV时自动转换为全大写的TRUE/FALSE格式。

解决方法

方法1:强制指定列的字符串类型

创建DataFrame时,明确声明Transported列的类型为字符串,阻断Pandas的自动类型推断:

combined_data = pd.DataFrame(
    {'PassengerId': df2['PassengerId'], 'Transported': y_pred},
    dtype={'Transported': str}
)
combined_data.to_csv('predictions_logistic.csv', index=False)

方法2:通过CSV参数强制保留字符串格式

使用csv模块的引号参数,让Pandas将非数值型数据用引号包裹,从而保留原始字符串的大小写:

import csv

combined_data.to_csv('predictions_logistic.csv', index=False, quoting=csv.QUOTE_NONNUMERIC)

方法3:优化数组处理逻辑(可选)

你原来的字节串-字符串转换步骤可以简化,直接生成目标字符串数组,减少类型混淆的可能:

import numpy as np

# 直接将数值数组映射为目标字符串
y_pred = np.where(y_pred == 1, 'True', 'False')
# 确保类型为字符串
y_pred = y_pred.astype(str)

内容的提问来源于stack exchange,提问作者Sumedh Kudale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 05:13:22