在 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个字符的字符串?
您应该能够通过将 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&|$
如果您不希望输出文件包含标头名称,只需从函数中删除标头参数即可。
希望这有帮助!