python3&;Pandas-在数据框中创建新行,但数据框为空

python3&;Pandas-在数据框中创建新行,但数据框为空,python,python-3.x,pandas,Python,Python 3.x,Pandas,我正在尝试使用for循环来迭代数组,并将项(新行)添加到数据帧中。但当我打印出数据帧时,它是空的。我一定是做错了什么 这是我的密码: 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()},

我正在尝试使用for循环来迭代数组,并将项(新行)添加到数据帧中。但当我打印出数据帧时,它是空的。我一定是做错了什么

这是我的密码:

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)

对于简单地添加新行,然后将数据添加到相应的列,您有什么建议吗

追加
不是一个
就地
操作。您需要将append的结果分配回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)

巧合的是,当你发布这个答案时,我尝试了:
sdf=sdf.append()
,它似乎给了我需要的结果,哈哈。你说得对,非常感谢你的解释和解决方案。