如何创建.csv文件而又不换行?

时间:2018-09-18 12:07:14

标签: python pandas dataframe

我有一个.csv文件,该文件可以在pandas DataFrame中完美读取,它只有一列,我们将其命名为Column1,它具有5个不同的值(0,1,2,3,4),我正在尝试创建四个新的csv文件,适用于我的每个类别。

为此,我使用pd.to_csv及其默认参数。但是,我的问题是,数据框的第二列由字符串组成(字符串之间带有引号),这些字符串内部可能有断点,因此当我创建新文件时,Column2的数据将被移至{{ 1}}。像这样:

Column1

您是否知道在没有这种效果的情况下如何创建新的数据框?我无法将原始文件放在如此繁重的位置,但是如果需要,我可以尝试创建一个示例。

我已经尝试过Column1 Column2 0 'this is correct' 1 'this is not correct' 中的line_separator = \n参数,但是由于我正在读取的文件的每一行都应该是新文件中的一行,因此它给出了错误。

4 个答案:

答案 0 :(得分:0)

为避免该问题,您可以为每个类别创建一个新的dictionary,并使用熊猫为每个字典创建一个csv,如果遇到麻烦,我将提供一个示例

答案 1 :(得分:0)

您有几种解决问题的方法。

1-您要从列中删除所有\ n,然后使用

d.Column2 = d.Column2.apply(lambda x : x.replace('\n', ''))

然后您将其打印在文件上。

2-您想保留\ n,这就是信息。您可以添加quotechars。

pd.to_csv(..., quotechars='"') #but this is by default right ?

您得到了:

  

“ Column1”“ Column2”

     

“ 0”“此”   是正确的'“

     

“ 1”“此”

     

不正确'“

这里一切都是正确的,因为任何好的工具都会使用引号来知道最后一行是Column2的一部分。

使用熊猫读取文件时,请为参数quotechars使用相同的值。

答案 2 :(得分:0)

我知道这是一个老问题,但是以上答案似乎并不能完美解决。

我最近有一个类似的问题,并想出了解决方法。原因是您的Column2中的第二个值具有字符\r\n,它们将创建新行。由于我使用的是Mac,因此如果值包含\r,则在应用data.to_csv时它将换行,其中datapd.DataFrame对象。

解决方案

escapechar="\r"中放入escapechar="\n"data.to_csv()参数。

data.to_csv(file_path, escapechar="\r")

示例

重现折线问题:

data_dict== {'Column1': [1,2], 'Column2': ["this is correct", "this\ris not correct"]}

data_df = pd.DataFrame(data_dict)

保存到csv

data_df.to_csv('test.csv')

然后,您将遇到断线问题。

如果我们执行data_df.to_csv('test.csv', escapechar="\r"),则问题将得到解决,并且字符\r也将存在。

答案 3 :(得分:0)

没有其他建议对我有用。在保存为CSV之前,我只是将所有\n替换为\\n,它将保留换行符。

df.Column2 = df.Column2.apply(lambda x : x.replace('\n', '\\n'))
df.to_csv("df.csv", index=False)