我试图用Python创建这个数据结构: 2-d array structure
必须有列键和行键,我稍后将使用它们。 列键和行键是随机数。在
现在我有了这个代码:
import random
cols, rows = 5, 5
Matrix = [[0 for x in range(cols)] for y in range(rows)]
set_col = 0
for row in Matrix:
row[set_col] = random.randint(1,2)
columnKeys = random.sample(range(1,5), 4)
Matrix[0] = columnKeys
for row in Matrix:
print(row)
输出:
^{pr2}$这不是我想要的。现在每个单元格的值都是零。但稍后它会有一些相关的数据,我将使用这些数据以及对应的行和列键。我不知道如何正确地组织这个数据结构,这样我就可以将单元格值与相应的行/列键一起使用。在
如何在没有Pandas和Numpy的情况下使用列和行键?在
输出
^{pr2}$这取决于你想要什么。在
最好的方法可能是使用嵌套列表,而不是使用字典。既然您提到了pandas,pandas DataFrame对象有一个^{} 函数,该函数将数据帧转换为字典,并且根据您的喜好有几个选项。在
我从您的示例中看到,您正在尝试创建具有重复索引的数据结构。这里最好的选择是使用通过运行
df.to_dict("split")
创建的结构。在假设您的数据帧(df)如下所示:
跑步`数据到字典(“分割”)将执行以下操作:
^{pr2}$在这个场景中,以及在@Makiflow所示的场景中访问数据是很棘手的。即使在Pandas中,数据帧上有重复的索引或列也会使操作更有趣。在本例中,选择
df['data'][3][1]
将选择data
键所包含的第三个列表中的第二个元素。这实际上是选择矩阵的第4行和第2列。如果你想通过列名称来引用项目,就必须多做一些腿部工作。在您可以运行
col_num = d['columns'].index(3)
,它将为您提供元素3
的索引值,但执行d['index'].index(2)
操作将始终为0,即使要在索引3处选择2。{cd8>返回第一个条件的值,因为该条件与第一个条件的值匹配。当然,您可以简单地通过(col,row)索引元组进行选择,但这样做首先会破坏列名称和索引值的目的。在如果要在不使用pandas的情况下生成此结构,可以运行: 列,行=5,5 列=[随机.randint(0,COLS)对于范围内的(COLS)] 行=[随机.randint(1,2)对于范围内的(行)]
IMHO-一个更好的解决方案实际上是强制数据结构具有唯一的索引和列值。
to_dict()
的默认输出将输出一个非常简单的字典:在这种配置中,字典的每个键都是列的名称。这些键中的每一个都指向另一个表示该列中信息的二进制数-每个键都是一个索引值,后跟一个值。在
这很可能是最直观的,因为如果您想在名为的索引1的列中获得名为3的值,您可以:
无需使用Pandas即可创建此数据结构:
它实际上取决于你所拥有的约束/需求。在
相关问题 更多 >
编程相关推荐