首页 > 解决方案 > 使用什么数据结构来存储在函数 python 中创建的值

问题描述

我有一个函数,它用 2 个循环迭代数据,执行计算,并且在第一个循环的每次迭代中,我得到 3 个值,我想保留在数据结构中,最好是使用数据框。所以在第一个循环结束时我有 3 个值,在第二个循环结束时,我应该得到很多行,每行有 3 个值。下面是前 3 行的示例:

   col_idx  value  score
0        0    2.4    5.5
1        0   10.1    150
2        0    1.9    8.8

最好的数据结构是什么?我试图将这 3 个值的列表附加到一个更大的列表中(稍后将其转换为数据框),但做不到。这是我的代码示例:

def calc(self):
    values = self.get_threshold_values()

    bigger_data = []

    for col_idx in range(len(self.data_set.columns)):

        score = 0.5
        value_to_split = 0
        small_data = []
        for j in range(len(threshold_values)):
            value = threshold_values.iloc[j][col_idx]  
            below_value, above_value = self.split_data(col_idx, value)
            score_for_value = self.calc_score(below_value, above_value)
            if score_for_value < score:
                score = score_for_value
                value_to_split = value
                small_data.append([col_idx, value_to_split, score])
        bigger_data.append(small_data)

    return bigger_data

我还想初始化 numpy 数组,然后将其转换为数据框。

有什么想法可以快速高效地完成吗?

标签: pythonpandaslistnumpydata-structures

解决方案


通过做

small_data.append([col_idx, value_to_split, score])

你的 small_data 成为一个列表,如 [[data1, data2...]] 但你需要一个普通的 list 。尝试:

small_data.extend([col_idx, value_to_split, score]) 

这将使:[data1,data2 ...]


推荐阅读