如何在不换行的情况下创建.csv文件?



我有一个可以在熊猫数据帧中完美读取的.csv文件,它有一列,让我们称之为Column1,有 5 个不同的值 (0,1,2,3,4(,我正在尝试创建四个新的 csv 文件,每个类别一个。

为此,我使用pd.to_csv及其默认参数。但是我的问题是数据帧的第二列是由字符串(它们周围有引号(形成的,这些字符串内部可能有断点,因此当我创建新文件时,Column2的数据将被移动到Column1。这样:

Column1           Column2
0              'this is correct'
1              'this
is not correct'

您是否知道如何在没有这种效果的情况下创建新数据帧?我无法将原始文件放在我正在读取数据集的位置,因为它太重了,但如果需要,我可以尝试创建一个示例。

我已经在pandas.to_csv()中尝试了line_separator = n参数,但它给出了错误,因为我正在阅读的文件的每一行都应该是我新文件中的一行。

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

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

溶液

escapechar="r"escapechar="n"论点放在data.to_csv()中。

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

重现断行问题:

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

data_df = pd.DataFrame(data_dict)

保存到 CSV

data_df.to_csv('test.csv')

然后我们将遇到您提到的断线问题。

如果我们这样做data_df.to_csv('test.csv', escapechar="r"),问题就会得到解决,角色r也会存在。

为了避免这个问题,你可以为每个类别创建一个新的dictionary,并使用pandas为每个字典创建一个csv,如果你遇到困难,我会提供一个示例

对于您的问题,您有几种解决方案。

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

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

然后打印在文件上。

2-你想保留,嗯,这是信息。您可以添加引号。

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

你得到 :

"列 1" "列 2"     

">

0"                  "这 是正确的'">

">

1"                  "这

不正确'">

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

只需在使用 pandas 读取文件时对参数引号使用相同的值即可。

其他建议都不适合我。在保存到 CSV 之前,我只是将所有n替换为\n,它将保留换行符。

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

最新更新