2015-05-02 70 views
0

我已经在python 2.7中使用sqlite创建了一个数据库,并将数据加载到了熊猫数据框中,如下所示。我想要做的是将结果打印为“七月份最热的城市是:伊斯坦布尔,安卡拉,伊兹密尔,布尔萨”。我已经用Python编写的代码如下:如何在一个语句中打印熊猫数据框值

import sqlite3 as lite 
import pandas as pd 

con = lite.connect("project_warmest.db") 

with con: 
    cur = con.cursor() 
    cur.execute("DROP TABLE IF EXISTS cities;") 
    cur.execute("DROP TABLE IF EXISTS weather;") 
    cur.execute("CREATE TABLE cities (name text, region text)") 
    cur.execute("CREATE TABLE weather (city text, warm_month text, average_high integer)") 

    cur.execute("INSERT INTO cities VALUES('Istanbul', 'Marmara')") 
    cur.execute("INSERT INTO cities VALUES('Ankara', 'Ic Anadolu')") 
    cur.execute("INSERT INTO cities VALUES('Izmir', 'Ege')") 
    cur.execute("INSERT INTO cities VALUES('Antalya', 'Akdeniz')") 
    cur.execute("INSERT INTO cities VALUES('Bursa', 'Marmara')") 

    cur.execute("INSERT INTO weather VALUES('Istanbul', 'July',24)") 
    cur.execute("INSERT INTO weather VALUES('Ankara', 'July',21)") 
    cur.execute("INSERT INTO weather VALUES('Izmir', 'July',27)") 
    cur.execute("INSERT INTO weather VALUES('Antalya', 'August',30)") 
    cur.execute("INSERT INTO weather VALUES('Bursa', 'July',23)") 
    cur.execute("SELECT city FROM weather INNER JOIN cities ON name = city WHERE warm_month = 'July'") 

    rows = cur.fetchall() 
    cols = [desc[0] for desc in cur.description] 
    df = pd.DataFrame(rows, columns = cols) 

print "The cities that are warmest in July are: %s, " %df.iloc[0]["city"] 

回答

1

您可以加入元素的数组从df["city"]

In [53]: print "The cities warmest in July are: %s" % ', '.join(df["city"].values) 
The cities warmest in July are: Istanbul, Ankara, Izmir, Bursa 

', '.join(df["city"].values) - 这将返回一个逗号分隔的字符串。


此外,您还可以使用pd.read_sql()pd.read_sql_query直接读取SQL结果数据帧。

In [54]: pd.read_sql("SELECT city FROM weather INNER JOIN cities ON name = city" 
    ....:    " WHERE warm_month = 'July'", con) 
Out[54]: 
     city 
0 Istanbul 
1 Ankara 
2  Izmir 
3  Bursa 
相关问题