首页 > 解决方案 > Pandas to_csv 正在删除逗号

问题描述

我的熊猫数据框中有一列作为列表,当我将文件写入 csv 时,它正在删除列表中的逗号。

要复制的代码

import numpy as np
def to_vector(probs, num_classes):
    vec = np.zeros(num_classes)
    for i in probs:
        vec[i] = 1
    return vec


import pandas as pd
l1 = [[[1,5]],[[2,4]]]
num = 10
a = pd.DataFrame(l1, columns=['dep'])
a['Y_dept'] = a["dep"].apply(lambda x: to_vector(x, num))
a.to_csv('a_temp.csv', index=False)

但是当我阅读同一个文件时, Y_dept 列中的逗号丢失了

b = pd.read_csv('a_temp.csv')
b.head()

    dep   Y_dept
0   [1, 5]  [0. 1. 0. 0. 0. 1. 0. 0. 0. 0.]
1   [2, 4]  [0. 0. 1. 0. 1. 0. 0. 0. 0. 0.]

预期输出:

    dep Y_dept
0   [1, 5]  [0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, ...
1   [2, 4]  [0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, ...

quoting=csv.QUOTE_ALL 不起作用。版本:熊猫==0.25.3

标签: pythonpandasexport-to-csv

解决方案


如果您将 numpy 数组转换为列表,那么您将找到所需的结果。默认情况下,numpy 数组不会使用逗号显示。计算机内部数据的表示不需要或不需要逗号,它们只是用于显示。

import numpy as np
import pandas as pd

def to_vector(probs, num_classes):
  vec = np.zeros(num_classes)
  for i in probs:
    vec[i] = 1
  return list(vec)


l1 = [[[1,5]],[[2,4]]]
num = 10
a = pd.DataFrame(l1, columns=['dep'])
a['Y_dept'] = a["dep"].apply(lambda x: to_vector(x, num))
a.to_csv('a_temp.csv', index=False)

推荐阅读