如何用Python去除TensorFlow预测结果CSV中的方括号?
去除CSV中数值外的方括号(Python实现)
有两种实用的解决方式,按需选择:
一、生成CSV前预处理数据(推荐)
问题根源是TensorFlow预测结果转成列表后,每个数值是单元素列表(比如[[0.558], [0.506]]),直接存CSV就会带上方括号。可以先把列表里的数值提取出来再保存:
import pandas as pd import tensorflow as tf # 假设这是你的预测张量 pred_r = tf.constant([[0.5584], [0.5065], [0.4849], [0.4955], [0.4939]]) pred_g = tf.constant([[0.5831], [0.5222], [0.4914], [0.5047], [0.4992]]) pred_b = tf.constant([[0.5836], [0.5133], [0.4914], [0.4992], [0.4986]]) # 提取单元素列表中的数值,去掉外层括号 processed_r = [item[0] for item in pred_r.numpy().tolist()] processed_g = [item[0] for item in pred_g.numpy().tolist()] processed_b = [item[0] for item in pred_b.numpy().tolist()] # 生成DataFrame并保存为CSV submission_df = pd.DataFrame({ 'target_r': processed_r, 'target_g': processed_g, 'target_b': processed_b }) submission_df.to_csv('clean_submission.csv', index=True)
二、对已生成的带括号CSV做清理
如果已经生成了带括号的CSV文件,可通过字符串替换或类型转换批量去除括号:
方法1:正则表达式替换
import pandas as pd # 读取原始CSV df = pd.read_csv('your_raw_file.csv', index_col=0) # 遍历所有目标列,替换掉方括号并转为数值类型 for col in ['target_r', 'target_g', 'target_b']: df[col] = df[col].str.replace(r'[\[\]]', '', regex=True).astype(float) # 保存清理后的文件 df.to_csv('cleaned_submission.csv')
方法2:解析字符串为列表后提取元素
如果确认每个单元格内容都是单元素列表的字符串形式(比如"[0.5584]"),可以用eval解析后取第一个元素:
import pandas as pd df = pd.read_csv('your_raw_file.csv', index_col=0) # 解析字符串为列表,提取第一个元素 for col in ['target_r', 'target_g', 'target_b']: df[col] = df[col].apply(lambda x: eval(x)[0]) df.to_csv('cleaned_submission.csv')
注意:
eval仅适合处理自己生成的安全文件,若CSV来源不可信,优先用正则替换方法。
内容的提问来源于stack exchange,提问作者Nosa
相关产品推荐
相关产品推荐

