[英]In pandas, how to replace values matching a condition with a value from the names of their columns?
[英]Python/Pandas How to get columns names AND values from a sql query
我嘗試將查詢結果從 mysql 導出到 excel 表。 我使用 Msqlconnector、pandas 庫,我做到了。
import mysql.connector
import pandas as pd
db = mysql.connector.connect(
host="SQLServer",
user="sqlusr",
password="usrpasswd",
database="sqldb"
)
cur = db.cursor()
cur.execute("SELECT * FROM direction_prix_proxi.matrice_sigma" \
" LEFT JOIN direction_pri.trans_int_prix_gen using(SIGMA, UV)" \
" LEFT JOIN direction_pri.trans_int_prix_module using(SIGMA, UV)" \
" LEFT JOIN direction_pri.trans_int_vol1an_hors_module using(SIGMA, UV)" \
" LEFT JOIN direction_pri.trans_int_vol1an_module using(SIGMA, UV);")
df = pd.DataFrame(cur.fetchall())
df.to_excel(file_path1, index = False, header=True)
它可以工作,但列名不在 excel 表中,我有數字。
我發現有一個 function 用於獲取列名,但我沒有成功在結果中實現它。
print(cur.column_names)
我發現的其他解決方案:
result = cur.fetchall()
num_fields = len(cur.description)
field_names = [i[0] for i in cur.description]
print(field_names)
for value in result:
print(value)
它在控制台中顯示結果,我想將其存儲在數據框中,以便在 excel 上導出。 我怎樣才能做到這一點?
謝謝
我不確定是否使用 cursor,但我在執行此操作時使用以下格式並且它有效。
import mysql.connector
import pandas as pd
db_conn = mysql.connector.connect(
host="SQLServer",
user="sqlusr",
password="usrpasswd",
database="sqldb"
)
query = """SELECT * FROM direction_prix_proxi.matrice_sigma
LEFT JOIN direction_pri.trans_int_prix_gen using(SIGMA, UV)
LEFT JOIN direction_pri.trans_int_prix_module using(SIGMA, UV)
LEFT JOIN direction_pri.trans_int_vol1an_hors_module using(SIGMA, UV)
LEFT JOIN direction_pri.trans_int_vol1an_module using(SIGMA, UV);
"""
df = pd.read_sql(query, db_conn)
df.to_excel(file_path1, index = False, header=True)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.