使用 pandas 的 df.to_csv 方法不适用于空格作为分隔符
Posted
技术标签:
【中文标题】使用 pandas 的 df.to_csv 方法不适用于空格作为分隔符【英文标题】:df.to_csv method using pandas does not work well with space as separator 【发布时间】:2018-07-29 09:06:11 【问题描述】:我正在尝试使用 pandas 将此数据框导出为 CSV,并使用空格作为分隔符。我这样做是因为我有两个数据框,我想将它们并排(水平)而不是垂直堆叠。我使用 concat 来执行此操作,但导出到 CSV 会使 python 自动将它们视为单个单元格。因此,当我将其写入 CSV 时,我尝试强制使用空格分隔符(参数 sep="")。但是,输出仍然忽略分隔符,结果仍然是单列数据。我的代码如下
import pandas as pd
file='RALS-03.csv'
df=pd.read_csv(file
#get two items on two different columns )
items1=df.iloc[:,0]
items2=df.iloc[:,4]
#get corresponding numbers for the two columns of items
mar1=df.iloc[:,2]
mar2=df.iloc[:,6]
#stack them vertically
df1=items1.append(items2)
df2=mar1.append(mar2)
#put them side by side
df4=pd.concat([df1, df2], axis=1)
#write to CSV file, with a space as a separator
df4.to_csv("new.csv", sep=" ")
有什么建议吗?谢谢你
【问题讨论】:
【参考方案1】:使用 sep= '\t'
df4.to_csv('new.csv', sep='\t')
【讨论】:
我使用 sep="\t" 得到的结果是它们消除了数据中的所有空格,并且输出变得连续并加载到单个列中。因此,它给我的不是“资产 10904”,而是“资产 10904”。我的预期输出是(A,A)中的资产和(A,B)中的10904【参考方案2】:在 concat 之前打印 df1 和 df2。检查它们的列标签和行索引,列标签不能相同。但行索引必须相同。
然后使用以下命令将结果打印到文件中
with open('df_out.txt', 'w') as f:
print(df4, file=f)
【讨论】:
以上是关于使用 pandas 的 df.to_csv 方法不适用于空格作为分隔符的主要内容,如果未能解决你的问题,请参考以下文章
Pandas DataFrame.to_csv 引发 IOError:没有这样的文件或目录