使CSV文件更容易在Python中使用头/列名修改/导航?

2024-09-28 05:23:58 发布

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

所以

我有一个CSV文件,它的列数不尽相同,我认为意味着我在下面尝试过的传统的标题制作方法将不起作用。。。在

我想要一些头文件的原因是,要使用包含100多个列的csv文件并执行类似rPol = math.exp((((-1.2359386)+float(row[48])*(row[33])+row[29]+row[13]+row[97]/row[50])))的操作变得异常困难

试着记住每一行的身份是一件很麻烦的事,如果我能做些类似的事情,那就容易得多了: rPol = math.exp((((-1.2359386)+float(depolscore)*(master_num)+ripen+offset_score+full/epilic)))

import csv

reader = csv.reader(open("test.csv"), delimiter=",")
headers = {"data", "title", "here", "testing", "stackoverflow"}
csv.DictWriter(reader, headers)
reader.writeheader()
for row in reader:
    print testing

如果不执行以下操作,我如何为特定列提供标题:

^{pr2}$

有什么想法吗?在


Tags: 文件csv标题头文件math传统floattesting
1条回答
网友
1楼 · 发布于 2024-09-28 05:23:58

您可以尝试使用namedtuple!它是tuple的一个子类,允许从iterable轻松创建,也可以方便地按名称访问字段。唯一需要注意的是,namedtuples和tuples一样是不可变的,因此您必须将新的tuples存储在某个地方:

headers = ["data", "title", "here", "testing", "stackoverflow"]
Row = namedtuple('Row', headers)
for raw_row in reader:
    row = Row._make(raw_row)

    # Do math
    score = row.data * row.here / stackoverflow
    # Print for user sake
    print score
    # Change the testing value
    new_testing = row.testing + (score - row.title)
    new_row = row._replace(testing=new_testing)

    # Do something with new_row...

相关问题 更多 >

    热门问题