我试图从csvfile中读入数据列,然后用它来做一些计算。问题是我的时间戳是十六进制的。我需要读入它们并将其转换为十进制,但我不知道如何将其转换为python,而不是Nan。你知道吗
我试过先把它做成一根绳子。你知道吗
colnames = [ 'sensor', 'x', 'y', 'z', 'azimuth', 'elevation', 'roll', 'timestamp']
data = pd.read_csv('The Project- 7-19 SS Arc Test.csv', names = colnames)
hexa_time_initial = data.timestamp.tolist()
它需要是一个十六进制的列表,但只是一个nan的列表。当它尝试运行转换循环时,我得到一个错误,即它不能用显式基转换非字符串。你知道吗
1, 0.614, -7.798, -1.465, -6.117, 3.050, 5.231,0x42ef4,
1, 0.615, -7.798, -1.465, -6.109, 3.049, 5.231,0x42f05,
1, 0.616, -7.798, -1.465, -6.097, 3.045, 5.232,0x42f15,
1, 0.615, -7.798, -1.465, -6.108, 3.048, 5.232,0x42f26,
1, 0.614, -7.798, -1.465, -6.121, 3.051, 5.230,0x42f37,
1, 0.615, -7.798, -1.465, -6.107, 3.048, 5.230,0x42f47,
1, 0.616, -7.798, -1.465, -6.100, 3.046, 5.230,0x42f58,
1, 0.614, -7.798, -1.465, -6.116, 3.049, 5.230,0x42f69,
感谢您提供示例数据。我在这里发帖,不是因为我确定我找到了解决方案,而是因为我无法在评论中显示输出。但我有个建议,也许会有帮助。你知道吗
当我读取您在帖子中显示的csv数据时,我得到以下输出:
我认识到,
timestamp
列是NaN
,但是sensor列不是第一列。我认为这是因为从excel创建的csv行以逗号结尾。然后,Pandas的行为就好像在末尾有一个(空的)额外的列。而且因为还有一个列作为您的名称,它似乎创建了一个索引与第一列。这也会将列名移动一位。这种行为在我看来很奇怪,但也可能是故意的。当然,我刚刚创建了一个bug ticket for this, to be sure。你用的是什么版本?你知道吗如果只是稍微更改一下阅读代码,就可以避免:
像这样阅读
df
之后,它看起来更好:现在列名已正确分配。这是因为
index_col=False
选项告诉pandas不要使用文件的第一列作为索引。你知道吗如果您愿意,还可以添加
usecols=range(len(colnames))
之类的内容,它告诉pandas,它应该只使用文件中与您有名称一样多的列,因此如果excel运行异常并在行尾添加几十个逗号,您不会因为数据帧中有许多空的和未命名的列而遇到问题。 您应该检查是否确实要使用sep=',\s*'
或者更确切地说是sep=','
。第一个只是确保删除列1的值之前的前导空格。。。你知道吗相关问题 更多 >
编程相关推荐