我需要将数据帧保存为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