[英]Python Pandas: Create new rows in dataFrame based on two columns
[英]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.