Python 将文本文件中的数据导入数据框
我正在使用Django构建一个web应用程序。我上传了一个文本文件使用 csv_file=request.FILES['file'] 我无法将csv读入熊猫。我尝试导入的文件包含文本和数据,但我只需要数据 我试过以下方法Python 将文本文件中的数据导入数据框,python,django,pandas,Python,Django,Pandas,我正在使用Django构建一个web应用程序。我上传了一个文本文件使用 csv_file=request.FILES['file'] 我无法将csv读入熊猫。我尝试导入的文件包含文本和数据,但我只需要数据 我试过以下方法 df=pd.read_csv(csv_file,sep=“”,header=None,names=[“col1”、“col2”、“col3”]、skiprows=2)尝试删除注释并读取数字 错误:熊猫将不会读取所有3列。它只读取1列 我尝试了df=pd.read_csv(csv
% filename
% username
2.0000 117.441 -0.430
2.0100 117.499 -0.337
2.0200 117.557 -0.246
2.0300 117.615 -0.157
2.0400 117.672 -0.069
views.py
def新测量(请求,主键):
material=material.objects.get(pk=pk)
如果request.method==“POST”:
form=NewTopicForm(request.POST)
如果form.is_有效():
topic=form.save(commit=False)
topic.material=材料
topic.message=form.cleaned\u data.get('message')
csv_file=request.FILES['file']
df=genDataFrame(csv_文件)
topic.data=df
topic.created_by=request.user
topic.save()
返回重定向('topic_detail',pk=material.pk)
其他:
form=NewTopicForm()
返回呈现(请求'new_topic.html',{'material':material,'form':form})
def genDataFrame(csv_文件):
df=pd.read_csv(csv_文件,sep=”“,header=None,names=[“col1”、“col2”、“col3”])
df=df.convert\u对象(convert\u numeric=True)
df=df.dropna()
df=df.reset_索引(drop=True)
返回DFU列表
我想要一个像这样的数据帧
col1 col2 col3
2.0000 117.441 -0.430
2.0100 117.499 -0.337
2.0200 117.557 -0.246
2.0300 117.615 -0.157
2.0400 117.672 -0.069
这将对您提供的数据起作用,并为您提供所需的数据帧:
df = pd.read_csv(csv_filepath, sep=' ', header=None,
names=['col1', 'col2', 'col3'], skiprows=2, engine='python')
因为
sep
不止一个字符,所以需要使用python引擎而不是C引擎。python引擎有时会遇到引号问题,但您没有引号,所以这很好。实际上,您甚至不需要指定python引擎,它将自动为您选择,但您将得到一个对stderr的警告;指定引擎会抑制这种情况。您在描述点2中的方法几乎是正确的。另外,我的答案只是将regex作为分隔符添加到@prooffreader的答案中,因为它将使语句不那么容易出错
df = pd.read_csv('file_path', sep="\s+",header=None,
names=['col1', 'col2','col3'], skiprows=2)
当sep=''时,我得到一个错误“不能在类似字节的对象上使用字符串模式”。当我有sep='\s+'时,警告是“字符串中的异常反斜杠:'\s'。字符串常量可能缺少一个r前缀”,它给我一个空的数据帧当你在正则表达式中使用反斜杠时,你需要使用原始文本,即sep=r'\s+'作为类似于bytest的对象,听起来你好像还没有将文件解码成文本格式。你能告诉我如何将文件解码成文本格式吗?当我键入csv_filepath.read()时,类类型是“bytes”。当我的sep=''时,我得到一个错误“无法在类似字节的对象上使用字符串模式”。当我有sep='\s+'时,警告是“字符串中的异常反斜杠:'\s'。字符串常量可能缺少一个r前缀”,它使用分隔符=r'\s+'给我一个空的DataFrameTry。如果这不起作用,你可以发布完整的代码,你用它来读取文件和文件吗?理想情况下,您不应该出现这样的错误。谢谢!成功了。我不得不重新进口。这就是错误所在