簡體   English   中英

Python3 Pandas-基於對象數組創建新的DataFrame

[英]Python3 Pandas - Create new DataFrame based on array of objects

我有一個對象數組。 我試圖遍歷該數組並創建一個新的數據框,然后將其保存到電子表格中。

我的對象變量是這樣的:

def __init__(self, question, total):
    self.question = str(question)
    self.total = float(total)
    self.answers = {}

question是問題文本的字符串

total是問題獲得的總票數

answers是一個包含以下數據的字典: {'Yes': 5, 'No': 2, 'Maybe': 1} ,答案選擇的字符串和答案收到的票數

我試圖q_array Question對象的q_array ,追加問題和總數,然后在下面的for循環中遍歷答案項並將其追加到其他行上。

這是所需的輸出/工作表:

Question                Answer    Total    Percent
What color is the sky?            22       
                        Red       8        36.4%
                        Green     2        9.1%
                        Blue      12       54.5%

這是我當前的代碼:

writer = pd.ExcelWriter('master.xlsx')

sdf = pd.DataFrame(columns=('Question', 'Answer', 'Total', 'Percent'))
for data in q_array:
    sdf.append({'Question': data.get_question(), 'Total': data.get_total()}, ignore_index=True)
    for answer, number in data.get_answers().items():
        sdf.append({'Answer': answer, 'Total': number, 'Percent': number_to_percent(number, data.get_total())}, ignore_index=True)

sdf.to_excel(writer, 'stats', index=False)

writer.save()

我正在嘗試使用.append()添加新行並選擇該行中要包含的數據。 但是,當我打印sdf它是空的,並且在電子表格中它具有列,但是其余數據丟失了。 我究竟做錯了什么? 感謝您提供的任何幫助!

答案很簡單:我需要將DataFrame設置為等於append,而不是sdf.append() ,因此sdf = sdf.append()

這是正確的代碼:

writer = pd.ExcelWriter('master.xlsx')

sdf = pd.DataFrame(columns=('Question', 'Answer', 'Total', 'Percent'))
for data in q_array:
    sdf = sdf.append({'Question': data.get_question(), 'Total': data.get_total()}, ignore_index=True)
    for answer, number in data.get_answers().items():
        sdf = sdf.append({'Answer': answer, 'Total': number, 'Percent': number_to_percent(number, data.get_total())}, ignore_index=True)

sdf.to_excel(writer, 'Stats', index=False)

writer.save()

暫無
暫無

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

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