【问题标题】:CSV Reading and Parsing of Motion capture data运动捕捉数据的 CSV 读取和解析
【发布时间】:2013-06-12 19:21:19
【问题描述】:

我有一个动作捕捉文件,其中包含如下信息:

我需要文件看起来像这样:

不同之处在于我不需要任何顶部,只需从第 31 行 b 列开始。在第 31 行,有 LFHD 之类的关键字,下面是 xyz 位置。通过读取 csv 并为每一行获取字典,我的代码适用于修改后的版本:

filename = args
jointCSVs=[]
if filename != None:
    print "Trying to get file"
    joint_file = open(str(filename),"rb")
    reader = csv.DictReader(joint_file)
    print "Got File"
    for data in reader:
        jointCSVs.append(data)
    return jointCSVs    

我找不到任何关于如何使用 python 和 csv 做更复杂的事情的好信息,特别是因为我的代码,只有第一个块被读入,当有空格时它结束。我什至尝试了我找到的这段代码,但它不会打开第一个 csv 文件,它只是崩溃: pyqt - populating QTableWidget with csv data

手动修改需要很长时间,而且我有很多这些文件。稍后我计划制作更多的 gui 东西,可以编辑文件并修改它们或选择对许多处理动作捕捉数据的人有用的部分。我找不到任何用于复杂数据操作的库或用于指定要从文件中删除的行和列的简单方法。这是否存在或有人可以解释如何做到这一点?

谢谢!

【问题讨论】:

    标签: python qt csv


    【解决方案1】:

    在处理像您这样的数据源时,我经常使用Numpy。有一些强大的函数可以将文件数据读入 Numpy 数组。一旦进入 numpy 数组,行和列就很容易操作。例如,您可以切掉前 30 行,操作标题并使用 python 脚本再次写回文件。举个简单的例子:

    import numpy as np
    
    data = np.loadtxt("input.csv", skiprows=32)
    
    # play with data, remove 1st column and write back to disk...
    data = data[:, 1:]
    
    np.savetxt("output.csv", data, header='LFHDX,LFHDT')
    

    制定新的标题并将其传递到 savetxt。

    【讨论】:

    • 这看起来不错,但我在尝试使用 numpy 加载文件时遇到了一些错误。一个是加载动作捕捉数据时将字符串转换为浮点数时出错。
    • 具体错误是什么?您可能必须使用 dtype,或定义转换器来处理边缘情况。有没有找到genfromtxt,在读取复杂数据文件时更强大?
    猜你喜欢
    • 1970-01-01
    • 2011-12-30
    • 1970-01-01
    • 1970-01-01
    • 2020-11-08
    • 2011-08-25
    • 2016-07-18
    • 1970-01-01
    • 2021-04-15
    相关资源
    最近更新 更多