我有以下DataFrame:
by_timeofday=
Area1 Area2 Area3 Area4
Time
Day (9AM-6PM) 1 0.411111 0.405556 0
Evening (6PM-10PM) 1 0.650000 0.650000 0
Morning (5AM-9AM) 1 1.000000 1.000000 0
Night (10PM-5AM) 1 1.000000 1.000000 0
此DataFrame还与特定的日期和区值相关联。
我想将此DataFrame的内容输出到SQL数据库中,它将以下列方式/包含以下信息:
TABLE NAME : District_Area#
表格内容(区域2显示的示例):
Date Morning (5AM-9AM) Day (9AM-6PM) Evening (6PM-10PM) Night (10PM-5AM)
01.01.2011 1.000000 0.411111 0.650000 1.000000
当不同的DataFrames写入SQL时,SQL表应该获得更多行。任何人都可以帮我创建一些代码来重新组织我的数据并以这种方式将其写入SQL吗?我是Python的新手,很遗憾没有找到很多关于Pandas和SQL文档的直接有用的信息。
非常感谢你。
答案 0 :(得分:1)
您可以使用(部分)DataFrame并将其写入SQL数据库。这是一个基本的例子(使用sqlite):
import sqlite3 as sql
con = sql.connect(PATH_TO_DATABASE)
table_name = test
by_timeofday.to_sql(name=table_name, con=con, FURTHER_OPTIONS) # write full df to sql
在编写不同的DataFrame时,SQL表应该获得更多行 到SQL。
在这种情况下,您可以在df.to_sql()中设置选项:
if_exists:append:如果表存在,则插入数据。如果不存在则创建。
修改强>
要重新组织新的DataFrame(一步一步):
In[30]: by_timeofday
Out[30]:
Area1 Area2 Area3 Area4
Day 1 0.411111 0.405556 0
Evening 1 0.650000 0.650000 0
Morning 1 1.000000 1.000000 0
Night 1 1.000000 1.000000 0
In[33]: by_timeofday.loc[:,"Area2"] # this is a 'Series' not a 'DataFrame'
Out[33]:
Day 0.411111
Evening 0.650000
Morning 1.000000
Night 1.000000
In[36]: df = pd.DataFrame(by_timeofday.loc[:,"Area2"]) # make 'DataFrame' out of the 'Series'
Out[36]:
Area2
Day 0.411111
Evening 0.650000
Morning 1.000000
Night 1.000000
In[41]: df.T # transpose
Out[41]:
Day Evening Morning Night
Area2 0.411111 0.65 1 1
In[44]: df = pd.DataFrame(by_timeofday.loc[:,"Area2"]).T # all in one
Out[44]:
Day Evening Morning Night
Area2 0.411111 0.65 1 1
# add date:
In[45]: df["Date"] = "01.01.2011"
In[46]: df
Out[46]:
Day Evening Morning Night Date
Area2 0.411111 0.65 1 1 01.01.2011