为列命名,然后使用名称而非索引调用项目
我有一份需要分析的列的列表。与其每次都用具体的索引,比如 data[1][2],我想给某一列起个名字,然后在处理不同任务时循环遍历这列的行。请问我该如何给一列命名,然后用什么格式来引用它呢?
for x in range (len(data)):
if [column_name][x] ....
3 个回答
0
我觉得你想做的是把一列数据存到一个变量里,然后在需要的时候引用这个变量,而不是每次都用下标去访问。其实这很简单:
varName=data[columnName]
之后如果要访问那一列数据,使用 varName[rowName]
就可以了。
2
使用名字而不是数字来访问你的数据,最简单的方法就是用字典。
data = {'pig':[1, 2], 'cow':[3, 4], 'dog':[5,6]}
if data in range(2):
if data['dog'][1]==4:...
当然还有其他方法。例如,你可以创建一个类并重写 __getitem__
方法;或者你可以直接给二维数组的列号分配变量名,比如 dog=2
,等等;具体选择哪种方法,取决于你想要做什么。
3
有很多种方法可以做到这一点。如果你在写代码的时候就知道名字和列之间的关系,最简单的方法就是这样:
for row in data:
(foo, bar, baz, bat) = row
...假设你不需要更新 row
(和 data
)。
如果你需要更新这一行,直接把值复制到变量里就不行了。你需要通过索引来操作这些项目。在这种情况下,aviraldg 的方法是最简单的:
(foo, bar, baz, bat) = range(4)
for row in data:
row[foo] = row[bar]
如果你想用一个包含列名的 字符串 来引用这些列,你需要把这一行复制到一个字典里,字典的键是列名。然后,当你完成对字典的操作后,你需要更新原来的列表,或者用一个新的列表替换它(这就是这段代码的作用):
columns = ("foo", "bar", "baz", "bat")
for i in range(len(data)):
d = dict(zip(columns, data[i]))
d["foo"] = d["bar"]
data[i] = [d[col] for col in columns]