簡體   English   中英

如何在 csv 中保存我的表格及其列標題?

[英]How can I save my table with its column headers in csv?

我無法正確顯示我的表格。即 output 中缺少標題。 但是,如果我從 SQL 打印原件,它是可用的。 我不准確地理解 iterrows 是如何工作的,因為我認為正是在這一點上,標題丟失了。 有人能幫我解決這個問題,還是有其他出路。 Initially, I could do this with the SQL data being converted to csv and then I read the csv directly into reportlab to get the pdf. 但是,我不希望在我的目錄中有物理 csv 文件,這就是我決定從 SQL 中的數據庫調用數據的原因。

overall_summary = self.choose_class_combo.currentText()+" " + self.choose_term_combo.currentText() + " "+ self.choose_year_combo.currentText() + " for summary"
conn = sqlite3.connect('mydb.db')
cur = conn.cursor()
str_summary = pd.read_sql("SELECT * FROM '" + str(overall_summary) + "'", conn)  
tdata = [] 
for index, row in str_summary.iterrows():
    rowdata = []
    BLANK=row[0]
    A1 =row[1]
    A2=row[2]
    B3=row[3]
    B4=row[4]
    B5=row[5]
    C6=row[6]
    C7=row[7]
    C8=row[8]
    D9=row[9]
    D0=row[10]
    D1=row[11]
    E2=row[12]
    X=row[13]
    Z = row[14]
    TOTAL=row[15]
    MEAN=row[16]
    GRD=row[17]
    rowdata.append(BLANK)
    rowdata.append(A1)
    rowdata.append(A2)
    rowdata.append(B3)
    rowdata.append(B4)
    rowdata.append(B5)
    rowdata.append(C6)
    rowdata.append(C7)
    rowdata.append(C8)
    rowdata.append(D9)
    rowdata.append(D0)
    rowdata.append(D1)
    rowdata.append(E2)
    rowdata.append(X)
    rowdata.append(Z)
    rowdata.append(TOTAL)
    rowdata.append(MEAN)
    rowdata.append(GRD)
    tdata.append(rowdata)
conn.commit()
conn.connect()

這就是 SQL 中的內容,這與我在 pdf 中想要的 output 相同。

SUBJ   A  A-  B+  B  B-  C+  C  C-  D+   D  D-   E  X  Z  TOTAL MEAN   GRD
EAGLE  0   0   0  0   2   2  1   4   5  11  15   7  0  0   47  3.1064   D
HAWK   0   0   0  0   1   0  3   3   4   7  17  11  0  0   46  2.6739   D
TOTAL  0   0   0  0   3   2  4   7   9  18  32  18  0  0   93  2.8925   D

我用 iterrows 得到的 output 如下。

EAGLE  0   0   0  0   2   2  1   4   5  11  15   7  0  0   47  3.1064   D
HAWK   0   0   0  0   1   0  3   3   4   7  17  11  0  0   46  2.6739   D
TOTAL  0   0   0  0   3   2  4   7   9  18  32  18  0  0   93  2.8925   D

Pandas iterrows()返回 pandas 系列的行。 其中行的索引是原始 dataframe 中的列。 在使用str_summary.columns.tolist()開始 for 循環之前,您可以 append 將標頭轉換為tdata

或者,這可能有助於[str_summary.columns.tolist(),] + str_summary.values.tolist() 我們在這里所做的是提取 header 和值將它們轉換為列表並將它們添加在一起。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM