如何设置一个空格作为to_csv()的分隔符?-python



我需要将数据帧保存为csv,因为我知道我需要在另一个脚本中使用delim_whitespace=True选项读取该csv文件?

下面是我尝试做什么的一个例子->我正在使用的数据帧df如下:

id  var1        var2
0   0   0.000000    0.000000
1   1   0.000000    0.000000
2   2   0.000000    0.000000

我想用delim_whitespace作为分隔符保存它,所以我尝试了:

df.to_csv('df_file.csv', delim_whitespace=True) #does not work
df.to_csv('df_file.csv', sep=r"s+")            #cannot be opened with a pd.read_csv('df_file.csv', delim_whitespace=True)
df.to_csv('df_file.csv', sep='t')              #cannot be opened with a pd.read_csv('df_file.csv', delim_whitespace=True)
df.to_csv('df_file.csv', sep=' ')               #cannot be opened with a pd.read_csv('df_file.csv', delim_whitespace=True)
df.to_csv('df_file.csv', sep='    ')            #cannot be saved because sep needs one character apparently

我可以使用什么分隔符,以便使用delim_whitespace=True选项读取该文件?

下面是一个完整的保存/读取示例:

样本数据:

import pandas as pd
d = {'id': {0: 0, 1: 1, 2: 2}, 'var1': {0: 0.0, 1: 0.0, 2: 0.0}, 'var2': {0: 0.0, 1: 0.0, 2: 0.0}}
df_save = pd.DataFrame(data=d)

代码:

index=False,否则在加载之后,索引将被添加为另一个单独的列。

p = r'C:test.csv'
df_save.to_csv(p, sep=' ', index=False)
df_read = pd.read_csv(p, sep=' ')

输出:

id  var1  var2
0   0   0.0   0.0
1   1   0.0   0.0
2   2   0.0   0.0

如果出现错误:ParserError: Error tokenizing data. C error: Expected 66 fields in line 16080, saw 67

这意味着你在那一行中至少比应该有的多了一个空格。你现在可以用一些阅读器检查文件,例如Pycharm,甚至Excel,然后清理那一行。

或者你可以简单地跳过这样的坏行:

df = pd.read_csv('df_file.csv', error_bad_lines=False)

尝试使用:

df.to_csv("output.csv",sep=' ')

以保存文件。

读取文件:

df=pd.read_csv("output.csv",sep=' ')

您将获得"Unnamed:0"作为列名,只需运行即可处理:

df.drop(columns=['Unnamed: 0'],inplace=True)

首先,您不能在to_csv中使用delim_whitespace。检查文档


entries=[[0,1,2],[0.,0.,0.],[0.,0.,0.]]
df=pd.DataFrame(dictt,columns=['id', 'var1', 'var2'])
df
Output:
id  var1    var2
0   0.0     1.0     2.0
1   0.0     0.0     0.0
2   0.0     0.0     0.0

使用sep=' '保存并使用cat检查生成的文件。

df.to_csv('temp.csv',sep=' ')
!cat tt.csv
Output:
id var1 var2
0 0 0.0 0.0
1 1 0.0 0.0
2 2 0.0 0.0

然后可以使用delim_whitespace=True读取

pd.read_csv('temp.csv',delim_whitespace=True)
Output:
id  var1    var2
0   0.0     1.0     2.0
1   0.0     0.0     0.0
2   0.0     0.0     0.0

相关内容

  • 没有找到相关文章

最新更新