Pandas to_csv正在删除逗号

3

我可以帮您翻译。以下是需要翻译的内容:

我的Pandas数据框中有一列是列表,当我将文件写入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不能工作。 版本:pandas==0.25.3

1个回答

4
如果将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)

谢谢。问题已解决。但是,将文件保存为列表时,其大小几乎比保存为np数组大3-4倍。虽然我的问题已解决,我可以继续进行,但如果有一种方法可以将其保存为np数组并在重新加载时仍然保留逗号,那将非常有帮助。谢谢! - Prince

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接