使用什么数据结构来存储函数python中创建的值

使用什么数据结构来存储函数python中创建的值,python,pandas,list,numpy,data-structures,Python,Pandas,List,Numpy,Data Structures,我有一个函数,它使用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个值的列表附加到一个更

我有一个函数,它使用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
def计算(自身):
values=self.get\u threshold\u values()
更大的数据=[]
对于范围内的列idx(len(self.data\u set.columns)):
分数=0.5
值\u到\u拆分=0
小数据=[]
对于范围内的j(len(阈值_)):
value=threshold\u values.iloc[j][col\u idx]
低于_值,高于_值=自分割数据(列idx,值)
_值的得分=self.calc_得分(低于_值,高于_值)
如果值小于分数的分数为:
分数=分数为值的分数
值到分割=值
小数据。追加([col\u idx,value\u to\u split,score])
大数据。追加(小数据)
返回更大的数据
我还想初始化numpy数组,然后将其转换为数据帧

有没有快速高效的方法?

通过

small_data.append([col_idx, value_to_split, score])
您的小数据将成为类似[[data1,data2…]]的列表,但您需要一个普通列表。尝试:

small_data.extend([col_idx, value_to_split, score]) 
这将通过执行以下操作使:[data1,data2…]

small_data.append([col_idx, value_to_split, score])
您的小数据将成为类似[[data1,data2…]]的列表,但您需要一个普通列表。尝试:

small_data.extend([col_idx, value_to_split, score]) 
这将使:[data1,data2…]

以下是一个示例

import random 
import pandas as pd

res = {'col_idx': list() , 'value': list() , 'score' : list()}
for _ in range(5):
    small_data = [random.randint(1,10) for _ in range(3)]
    for i, k in enumerate(res):
        res[k].append(small_data[i])

print(pd.DataFrame(res))
输出样本

   col_idx  value  score
0        5      9      8
1        8     10      6
2        6      5      6
3        9      9      4
4        6     10      9
这里有一个例子

import random 
import pandas as pd

res = {'col_idx': list() , 'value': list() , 'score' : list()}
for _ in range(5):
    small_data = [random.randint(1,10) for _ in range(3)]
    for i, k in enumerate(res):
        res[k].append(small_data[i])

print(pd.DataFrame(res))
输出样本

   col_idx  value  score
0        5      9      8
1        8     10      6
2        6      5      6
3        9      9      4
4        6     10      9

pd.DataFrame(更大的数据)?
但不能这样做
-这没有多大帮助。添加到列表是增长结构的一种好方法。那么您的尝试出了什么问题?这就是我得到的错误:
ValueError:列重叠但未指定后缀:Int64Index([1],dtype='int64')
。事实上,即使我尝试将3个值添加到小列表中,它也会给我这个错误。你知道如何一次向列表中追加3个值吗?你可以使用:small\u data.extend([col\u idx,value\u to\u split,score])pd.DataFrame(biger\u data)?
但不能这样做
-这不是很有帮助。添加到列表是增长结构的一种好方法。那么您的尝试出了什么问题?这就是我得到的错误:
ValueError:列重叠但未指定后缀:Int64Index([1],dtype='int64')
。事实上,即使我尝试将3个值添加到小列表中,它也会给我这个错误。知道如何一次向列表中追加3个值吗?可以使用:small\u data.extend([col\u idx,value\u to\u split,score])