2017-07-31 117 views
1

我試圖使用for循環遍歷數組,並將項(新行)添加到數據框。但是當我打印出DataFrame時,它是空的。我一定做錯了什麼。Python 3&Pandas - 在DataFrame中創建新行,但是爲空DataFrame

這裏是我的代碼:

sdf = pd.DataFrame(columns=('Question', 'Answer', 'Total', 'Percent')) 
for i, data in enumerate(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) 
print(sdf) 

上簡單地增加一個新行,然後將數據添加到相應的列有什麼建議?

+1

看看['pd.concat'(https://pandas.pydata.org/pandas-docs/stable/generated/pandas.concat.html) –

回答

1

append不是inplace操作。您需要將追加結果分配回sdf變量。

sdf = pd.DataFrame(columns=('Question', 'Answer', 'Total', 'Percent')) 
for i, data in enumerate(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) 
print(sdf) 
+0

巧合的是,因爲你發佈此回答,我嘗試過:'sdf = sdf.append()',它似乎給了我需要的結果,哈哈。你是對的,非常感謝你的解釋和解決方案。 – Kenny

+0

不客氣。快樂的編碼! –

相關問題