什么是一个好的Python数据结构,它可以存储具有相同索引和一些次要元数据的数据列表?

2024-09-29 23:32:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一组列表,每个列表用于存储事件的某些特征。我还有一个对应于事件编号的索引。因此,对于一个特定的事件号,比如index = 123,我可以查看该索引下各种列表的元素(例如event_color[123]),以查看事件的特征。我想在某个对象中收集这些列表。我还可以将一个简单的元数据对象(如字典)附加到该对象。在

对于这种类型的数据,什么是好的对象类型?在

以下是一个想法的开端:

data = {}
data["color"] = ["red", "green", "blue"]
data["mass"]  = [100, 98, 90]
data["speed"] = [10, 11, 9]
data["metadata"] = {"event_type": "2015-12-11T1442Z"}

也许可以告诉对象要使用哪个事件号,然后可以请求它的各种当前特性。在


编辑:在gkusner的suggestion之后,我创建了以下数据结构类:

^{pr2}$

Tags: 数据对象event元素类型列表dataindex
2条回答

一个可能的解决方案是使用pandas库,尤其是DataFrame对象。如果您不熟悉该库,here是一个简短的入门教程。这个库有很多有用的特性(例如,处理日期/时间数据)。它是否对你有用取决于你想要使用的算法(正如彼得·伍德的评论所建议的那样)。在

对于您的简短示例,可以将data对象构建为DataFrame作为

import pandas as pd
data = pd.DataFrame({'color': ['red', 'green', 'blue'],
                     'mass': [100, 98, 90],
                     'speed': [10,11,9]})

然后您可以访问完整的data对象或其中的特定元素,例如

^{pr2}$

您还可以对列执行操作,并将结果另存为data对象中的新列,例如:

>>data['momentum'] = data['mass']*data['speed']
>>print data
   color  mass  speed  momentum
0    red   100     10      1000
1  green    98     11      1078
2   blue    90      9       810
>>data.loc[2, 'momentum']
810

我不确定的是你想要的元数据位。我知道这是整个对象(不是特定事件)的一些元数据。我不知道向DataFrame添加“global metadata”的简单方法,但是您可以添加一个包含信息的额外列(即使它对于所有事件都是相同的)。在您的例子中:

data = pd.DataFrame({'color': ['red', 'green', 'blue'],
                     'mass': [100, 98, 90],
                     'speed': [10,11,9],
                     'event_type': "2015-12-11T1442Z"})

结果是

>>print data
   color        event_type  mass  speed
0    red  2015-12-11T1442Z   100     10
1  green  2015-12-11T1442Z    98     11
2   blue  2015-12-11T1442Z    90      9

字典(特别是嵌套字典):

data = {}
index = 123
data[index] = {}
data[index]["color"] = ["red", "green", "blue"]
data[index]["mass"]  = [100, 98, 90]
data[index]["speed"] = [10, 11, 9]
data[index]["metadata"] = {"event_type": "2015-12-11T1442Z"}

通知索引未引用

您也可以将它定义为一个类,每个索引值都定义一个实例,但这可能会超出您的需要

相关问题 更多 >

    热门问题