私はオブジェクトの配列を持っています。私はその配列をループし、新しいデータフレームを作成し、それをスプレッドシートに保存しようとしています。Python3 Pandas - オブジェクトの配列に基づいて新しいDataFrameを作成する
マイオブジェクト変数は、このようなものです:
def __init__(self, question, total):
self.question = str(question)
self.total = float(total)
self.answers = {}
question
は、質問テキスト
total
の文字列で、質問は
answers
を受け、総投票数は含む辞書ですデータは次のようになります。{'Yes': 5, 'No': 2, 'Maybe': 1}
、回答の選択肢の文字列、回答が得られた投票数の数字
のQuestion
オブジェクトをループし、質問と合計を追加してから、次に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
を印刷すると、それは空で、スプレッドシートには列がありますが、残りのデータはありません。私は間違って何をしていますか?何か助けてくれてありがとう!