Python 从Flask下载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

我有一个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: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()