Python-遍历列表中多个数据框的每一行

时间:2018-07-20 18:55:20

标签: python list for-loop dataframe

我正在尝试导出我未正确分类的每个推文。

我正在使用下面的代码(在线获取并进行调整),该代码使用混淆矩阵来确定我对哪些推文进行了错误分类:

misclassified_svm = []
misclassified_svm_details = []

for predicted in event_id_df.event_id:
    for actual in event_id_df.event_id:
        if predicted != actual and conf_mat_svm[actual, predicted] >= 3:
            misclassified_svm.append("'{}' predicted as '{}' : {} examples.".format(id_to_event[actual], id_to_event[predicted], 
                  conf_mat_svm[actual,predicted]))
            misclassified_svm_details.append(testing_data_svm.loc[testing_data_svm.index[(testing_data_svm.actual_event_id == actual)& (testing_data_svm.predicted_event_id == predicted)]][['actual_event_type', 'preprocessed']])

这将在列表 misclassified_svm 中填充有关错误分类的概述。可以在下面看到:

Overview of misclassified tweets

目的是在列表 misclassified_svm_details 中填充每个错误分类的tweet,因此我可以理解导致错误分类的功能。相反,它将创建一个数据帧列表。可以在下面看到:

Screenshot of variables and dataframes contained within a list

我希望最终结果是我可以导出的变量,它包含列表 miclassified_svm_details 中每个数据框的每一行。

要清楚,我将使用不同的数据集运行此代码,因此我需要所提出的解决方案具有灵活性,并适应于列表中不同数量的数据框和每个数据框中不同数量的条目。 / p>

为了完整起见,这是我失败的尝试:

misclassified_svm_det_2 = []

for a in misclassified_svm_details:
   for b in range(len(misclassified_svm_details)):
        misclassified_svm_det_2.append(b)

这只会创建一个包含36个条目的列表,这些列表在0-5之间循环六次。

1 个答案:

答案 0 :(得分:2)

与其将Dataframe附加到列表中,还可以从一开始就将misclassigied_svm_details`设置为DataFrame并将其生成的每个数据集附加到列表中。

因此您的代码将显示为:

misclassified_svm = []
misclassified_svm_details = pd.DataFrame(columns=['actual_event_type', 'preprocessed'])

for predicted in event_id_df.event_id:
    for actual in event_id_df.event_id:
        if predicted != actual and conf_mat_svm[actual, predicted] >= 3:
            misclassified_svm.append("'{}' predicted as '{}' : {} examples.".format(id_to_event[actual], id_to_event[predicted], 
                  conf_mat_svm[actual,predicted]))
            misclassified_svm_details.append(testing_data_svm.loc[testing_data_svm.index[(testing_data_svm.actual_event_id == actual)& (testing_data_svm.predicted_event_id == predicted)]][['actual_event_type', 'preprocessed']])