【发布时间】:2020-01-05 23:46:24
【问题描述】:
我有一个函数,它用 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数组,然后把它变成数据框。
有什么快速高效的方法吗?
【问题讨论】:
-
pd.DataFrame(bigger_data) ?
-
but couldn't do it- 这不是很有帮助。附加到列表是增长结构的好方法。那么你的尝试有什么问题呢? -
这是我得到的错误:
ValueError: columns overlap but no suffix specified: Int64Index([1], dtype='int64')。实际上,即使我尝试将 3 个值添加到小列表中,它也会给我这个错误。知道如何一次将 3 个值附加到列表中吗? -
你可以使用:small_data.extend([col_idx, value_to_split, score])
标签: python pandas list numpy data-structures