【问题标题】:Pandas to_csv is removing commasPandas to_csv 正在删除逗号
【发布时间】:2020-10-23 05:04:32
【问题描述】:

我的 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 不起作用。 版本:熊猫==0.25.3

【问题讨论】:

    标签: python pandas export-to-csv


    【解决方案1】:

    如果您将 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 数组并且在我们重新加载它时仍然有逗号,那将会很有帮助。谢谢!!
    猜你喜欢
    • 2020-05-10
    • 2015-08-16
    • 1970-01-01
    • 2018-10-08
    • 2018-11-23
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    • 2016-11-25
    相关资源
    最近更新 更多