使用什么数据结构来存储函数python中创建的值
我有一个函数,它使用2个循环对数据进行迭代,执行计算,在第一个循环的每次迭代中,我得到3个值,我希望保留在数据结构中,最好是使用数据帧。在第一个循环结束时,我有3个值,在第二个循环结束时,我应该得到很多行,每行有3个值。前3行的示例如下:使用什么数据结构来存储函数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个值的列表附加到一个更
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])