to_CSV将np.array保存为字符串而不是列表

时间:2019-02-18 18:17:39

标签: python pandas csv

我想将熊猫数据帧另存为csv文件,问题是to_csv将np.array转换为字符串。

我想将数组另存为数组,我在文档中找不到有用的任何内容。

sudoku_solution = [a for a in assignment if a > 0]


label = np.reshape(np.array(sudoku_solution*n_splits), 
                   (n_splits, len(sudoku_solution)))

df = pd.DataFrame(zip(label))

path = './data/SplitsLabel.csv'
try:
    df.to_csv(path_or_buf = path, 
              mode = 'a',
              header = False)

solution_sudoku = [123,345,894,324,321,321](整数列表)

n_splits = 3(整数)

最终结果应该类似于:

0,[123 345 894 324 321 321]

1,[123345894324321321321]

3,[123 345 894 324 321 321]

但是现在的结果是:

0,“ [[123 345 894 324 321 321]”

1,“ [[123 345 894 324 321 321]”

3,“ [[123 345 894 324 321 321]”

如何去除那些引号?

2 个答案:

答案 0 :(得分:0)

我怀疑由于您的输出中包含逗号,因此可能输入引号来避免与格式冲突。您可以尝试将定界符更改为选项卡,这样就不会发生这种冲突。如果分隔符对您不起作用,您还可以更改“引号”。

查看此链接以获取更多信息:Pandas: use to_csv() with quotation marks and a comma as a seperator

答案 1 :(得分:0)

如果您遇到同样的问题,也许可以通过签入here来减轻您的头痛。

此处发布的所有解决方案都无法解决我的问题,因此这是解析字符串并将其转换为所需格式的代码:

   df = pd.read_csv(filepath_or_buffer = path_x,
                       header = None, 
                       names = ["i", "clauses"]) 

    #it is sad that I have to do that!
    df["clauses"] = df["clauses"].apply(lambda x: x.replace("[", ""))
    df["clauses"] = df["clauses"].apply(lambda x: x.replace("]", ""))
    df["clauses"] = df["clauses"].apply(lambda x: x.replace("\n", ""))
    df["clauses"] = df["clauses"].apply(lambda x: x.replace(",", ""))
    df["clauses"] = df["clauses"].apply(lambda x: x.split(" "))
    df["clauses"] = df["clauses"].apply(lambda x: np.array([int(i) for i in x]))

    cols = [x for x in range(120060)]
    df_x = pd.DataFrame(columns = cols)

    for i in range(len(df)):   
        df_x = df_x.append(pd.Series(data = {k: df["clauses"][i][k] for k in cols}),
                           ignore_index = True)

    df = pd.read_csv(filepath_or_buffer = path_y,
                       header = None, 
                       names = ["i", "label"]) 

    df_x.astype("int")