Python 从Flask下载CSV时,数据未写入CSV
我有一个CSV,其中包含一个月内各种社交媒体应用程序的用户活动数据 这里有一个片段 供参考: 以下是csv的内容Python 从Flask下载CSV时,数据未写入CSV,python,pandas,csv,Python,Pandas,Csv,我有一个CSV,其中包含一个月内各种社交媒体应用程序的用户活动数据 这里有一个片段 供参考: 以下是csv的内容 date_time;timestamp;Instagram;Facebook;Snapchat;Twitter;TikTok;YouTube 2020-08-23__04:16:00.705612;1598148961;N;N;N;N;Y;N 2020-08-23__04:17:02.308588;1598149022;N;N;N;N;Y;N 2020-08-23__04:18:0
date_time;timestamp;Instagram;Facebook;Snapchat;Twitter;TikTok;YouTube
2020-08-23__04:16:00.705612;1598148961;N;N;N;N;Y;N
2020-08-23__04:17:02.308588;1598149022;N;N;N;N;Y;N
2020-08-23__04:18:03.944537;1598149084;N;N;N;Y;Y;N
其中包含50000多条记录。
现在,当我通过我的Flask应用程序上传这个csv,对它进行更改并下载它时,它确实被下载了,这就是我得到的
我在代码中所做的就是上传CSV,并将“日期时间”的格式从(Y-M-D\u H-M-S.ms)更改为(Y-M-D H-M-S.ms),当我下载新文件时,数据没有正确写入CSV
这是我的代码
from flask import Flask, flash, render_template, request, make_response
import pandas as pd
import datetime
import csv
import io
@app.route('/mainPage', methods=['GET', 'POST'])
def upload_csv():
if request.method=='POST':
f=request.form['csvfile']
dataset=pd.read_csv(f)
df=pd.DataFrame(dataset, columns=list(dataset.columns))
date_time=[]
dt=df['date_time']
for i in range(len(dt)):
cons=dt[i] #considering the current datetime object
cons=cons.replace('__', ' ')
date_time_obj = datetime.datetime.strptime(cons, '%Y-%m-%d %H:%M:%S.%f')
date_time.append(date_time_obj)
df.drop(columns='date_time')
col = df.columns.tolist()
df['date_time']=date_time
df = df[(['date_time']+col[1:])]
si = io.StringIO()
cw = csv.writer(si)
cw.writerows(df)
output = make_response(si.getvalue())
output.headers["Content-Disposition"] = "attachment; filename=new.csv"
output.headers["Content-type"] = "text/csv"
return output
return render_template('home.html')
我认为这里有一些问题
df.drop(columns='date_time')
应该是
df = df.drop(columns='date_time')
或
接下来,新数据的插入对我来说太复杂了。你可以这么做
df.insert(loc=0, column="date_time", value=date_time)
最后,所有复杂的CSV输出都可能更容易使用
df.to_csv(index=False)
以下是我的完整代码(仅限Python,无烧瓶):
@格伦维加斯:谢谢你提供的数据等。下次,试着做一个决定。正如您所看到的,您可以删除Flask的需要,并在一个包含所有数据的小型Python程序中重新生成它。是的,先生..注意!我会的。
df.to_csv(index=False)
import pandas as pd
import datetime
from io import StringIO
csvdata = StringIO("""
date_time;timestamp;Instagram;Facebook;Snapchat;Twitter;TikTok;YouTube
2020-08-23__04:16:00.705612;1598148961;N;N;N;N;Y;N
2020-08-23__04:17:02.308588;1598149022;N;N;N;N;Y;N
2020-08-23__04:18:03.944537;1598149084;N;N;N;Y;Y;N""")
def upload_csv():
dataset=pd.read_csv(csvdata, delimiter=";")
df=pd.DataFrame(dataset, columns=list(dataset.columns))
date_time=[]
dt=df['date_time']
for i in range(len(dt)):
cons=dt[i] #considering the current datetime object
cons=cons.replace('__', ' ')
date_time_obj = datetime.datetime.strptime(cons, '%Y-%m-%d %H:%M:%S.%f')
date_time.append(date_time_obj)
df.drop(columns='date_time', inplace=True)
df.insert(loc=0, column="date_time", value=date_time)
return df.to_csv(index=False)
output = upload_csv()