to_csv pandas 中的分隔符设置

问题描述 投票:0回答:1

在 DataFrame.to_csv() pandas 中使用长度为 3 的字符串作为分隔符

在DataFrame的to_csv()方法中,我想将“sep”参数设置为'&|$'并尝试了以下代码:

 df.to_csv(path_or_buf='Desktop/hello.csv', sep='&|$', lineterminator='&|$')

但是我得到了错误:

TypeError: "delimiter" must be a 1-character string

有没有办法将“分隔符”设置为3个字符的字符串?

python pandas csv delimiter
1个回答
0
投票

您应该能够通过将 DataFrame 转换为 numpy

ndarray
并使用
np.savetxt
函数来实现此目的。

import numpy as np
import pandas as pd

# Generate dataframe
df = pd.DataFrame(
    np.random.randint(0, 100, size=(10, 4)), columns=pd.Index(["A", "B", "C", "D"])
)

# Convert to numpy
df_array = df.to_numpy().astype(np.int64)

# Save to csv file
np.savetxt(
    "out.csv",
    df_array,
    fmt="%s",
    delimiter="&|$",
    newline="&|$\n",
    header="&|$".join(list(df.columns.values)),
    comments="",
    encoding="utf-8",
)

在行尾带有列标题和分隔符的示例输出:

A&|$B&|$C&|$D&|$
22&|$51&|$12&|$61&|$
18&|$85&|$73&|$86&|$
8&|$66&|$0&|$42&|$
42&|$87&|$82&|$11&|$
12&|$94&|$11&|$46&|$
4&|$90&|$12&|$31&|$
21&|$66&|$93&|$76&|$
33&|$28&|$12&|$97&|$
10&|$40&|$22&|$82&|$
14&|$30&|$57&|$36&|$

如果您不希望输出文件包含标头名称,只需从函数中删除标头参数即可。

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.