繁体   English   中英

如何在Tkinter python2.7中将数据帧导出到CSV?

[英]How to export dataframe to CSV in Tkinter python2.7?

我试图让用户添加三个条目,并且代码将使用它们从API获取数据,然后将数据导出到CSV。 我正在尝试这样做,但是我不确定是什么问题,而且我对Tkinter还是很陌生。

from Tkinter import *
import sys
import csv
from urllib import urlopen
import json
from dateutil.relativedelta import relativedelta
from datetime import datetime
import pandas as pd

root = Tk()
start2 = StringVar()
end2 = StringVar()
root.geometry("1600x800+0+0")
root.title("Data")
startd = "2017-13-03"
endd = "2017-13-03"
power1 =""
ID = "1232.4343.323"
class data1:
    def __init__(self,master):
        frame = Frame(master)
        #frame.pack()
        Tops = Frame(root, width=1600, height=1000, bg="powder blue")
        Tops.pack(side=TOP)
        self.output()

        thelabel = Label(Tops, text="Data",font =('arial',30))
        thelabel.pack(side=TOP)

    def output(self):
        Label(text='Start Date:',font=('arial', 12, 'bold')).pack(side=LEFT,padx=12,pady=12)
        self.startd = Entry(root, width=10)
        self.startd.pack(side=LEFT,padx=2,pady=16)
        Label(text='End Date:',font=('arial', 12, 'bold')).pack(side=LEFT,padx=12,pady=12)
        self.endd = Entry(root, width=10)
        self.endd.pack(side=LEFT,padx=2,pady=16)
        Label(text='Device ID:',font=('arial', 12, 'bold')).pack(side=LEFT,padx=12,pady=12)
        self.ID = Entry(root, width=10)
        self.ID.pack(side=LEFT,padx=2,pady=16)

        self.b = Button(root, text='Submit', command=self.getjsondata)
        self.b.pack(side=LEFT,padx=20,pady=5)

    def getjsondata(self):
        global power1
        url1 = "https://api.data.com/mongo/measures/"+ID+"/"+startd+"/"+endd+"/?format=json"
        power1 = urlopen(url1).read()
        power1 = json.loads(power1)
        power11 = pd.DataFrame(power1)
        power11.csv(power11, file="MyData.csv")



b = data1(root)
root.mainloop()

数据采用json格式,这就是数据的来源:

[{ “时间戳”: “2017-01-14T19:47:00Z”, “值”: “423”},{ “时间戳”: “2017-01-14T19:47:30Z”, “值”:“419 “},{” 时间戳 “:” 2017-01-14T19:48:00Z”, “值”: “431”},{ “时间戳”: “2017-01-14T19:48:30Z”, “值”: “429”},{ “时间戳”: “2017-01-14T19:49:00Z”, “值”: “422”},{ “时间戳”: “2017-01-14T19:49:30Z”,“值“:” 427 “},{” 时间戳 “:” 2017-01-14T19:50:00Z”, “值”: “426”},{ “时间戳”: “2017-01-14T19:50:30Z”, “值”: “427”},{ “时间戳”: “2017-01-14T19:51:00Z”, “值”: “428”},{ “时间戳”:“2017-01-14T19:51:30Z “ ”值“: ”426“},{ ”时间戳“: ”2017-01-14T19:52:00Z“, ”值“: ”424“},{ ”时间戳“:” 2017-01-14T19:52 :30Z “ ”值“: ”423“},{ ”时间戳“: ”2017-01-14T19:53:00Z“, ”值“: ”453“},{ ”时间戳“:” 2017-01-14T19 :53:30Z “ ”值“: ”433“},{ ”时间戳“: ”2017-01-14T19:54:00Z“, ”值“: ”445“},{ ”时间戳“:” 2017-01 -14T19:54:30Z “ ”值“: ”438“},{ ”时间戳“: ”2017-01-14T19:55:00Z“, ”值“: ”430“},{ ”时间戳“:” 2017年-01-14T19:55:30Z”, “值”: “437”},{ “时间戳”: “2017-01-14T19:56:00Z”, “值”: “425”},{ “时间戳”: “2017-01-14T19:56 :30Z “ ”值“: ”420“},{ ”时间戳“: ”2017-01-14T19:57:00Z“, ”值“: ”431“},{ ”时间戳“:” 2017-01-14T19 :57:30Z “ ”值“: ”435“},{ ”时间戳“: ”2017-01-14T19:58:00Z“, ”值“: ”443“},{ ”时间戳“:” 2017-01 -14T19:58:30Z “ ”值“: ”430“},{ ”时间戳“: ”2017-01-14T19:59:00Z“, ”值“: ”425“},{ ”时间戳“:” 2017年-01-14T19:59:30Z”, “值”: “406”},{ “时间戳”: “2017-01-14T20:00:00Z”, “值”: “412”},{ “时间戳”: “2017-01-14T20:00:30Z”, “值”: “417”},{ “时间戳”: “2017-01-14T20:01:00Z”, “值”: “422”},{“时间戳“:” 2017-01-14T20:01:30Z”, “值”: “422”},{ “时间戳”: “2017-01-14T20:02:00Z”, “值”: “418”},{ “时间戳”: “2017-01-14T20:02:30Z”, “值”: “415”},{ “时间戳”: “2017-01-14T20:03:00Z”, “值”: “423”} ,{ “时间戳”: “2017-01-14T20:03:30Z”, “值”: “411”},{ “时间戳”: “2017-01-14T20:04:00Z”, “值”:“413 “}]

我已经使用panadas过滤了数据,主要问题是如何将条目链接到可以在代码中使用的变量。 这些条目是:ID:开始日期:结束日期:

请让我知道我的代码中有什么问题。另一方面,如果可能的话,我打算让用户打开将csv文件保存到计算机上的位置。

提前致谢

如果问题在pandas方面:

似乎您需要read_json ,然后如果需要通过timestamps选择数据,请使用loc

df = pd.read_json(url1).set_index('timestamp')
print (df)
                     value
timestamp                 
2017-01-14 19:47:00    423
2017-01-14 19:47:30    419
2017-01-14 19:48:00    431
2017-01-14 19:48:30    429
...
...

date = pd.to_datetime('2017-01-14 19:47:00')
var = df.loc[date, 'value']
print (var)
423

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM