gpt4 book ai didi

python - 如何将 csv 文件中的 Nan 列读取到 python 中以便可以使用数据?

转载 作者:太空宇宙 更新时间:2023-11-03 20:36:39 24 4
gpt4 key购买 nike

我正在尝试从 csv 文件中读取数据列,然后用它进行一些计算。问题是我的时间戳是十六进制的。我需要读入它们并转换为十进制,但我不知道如何将其作为除了 Nan 之外的其他内容输入 python。

我尝试先将其设为字符串。

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 列表。当它尝试运行转换循环时,我收到错误,它无法使用显式基数转换非字符串。

Sample of excel file

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 数据时,我得到以下输出:

   sensor      x      y      z  azimuth  elevation     roll  timestamp
1 0.614 -7.798 -1.465 -6.117 3.050 5.231 0x42ef4 NaN
1 0.615 -7.798 -1.465 -6.109 3.049 5.231 0x42f05 NaN
1 0.616 -7.798 -1.465 -6.097 3.045 5.232 0x42f15 NaN
1 0.615 -7.798 -1.465 -6.108 3.048 5.232 0x42f26 NaN
1 0.614 -7.798 -1.465 -6.121 3.051 5.230 0x42f37 NaN
1 0.615 -7.798 -1.465 -6.107 3.048 5.230 0x42f47 NaN
1 0.616 -7.798 -1.465 -6.100 3.046 5.230 0x42f58 NaN
1 0.614 -7.798 -1.465 -6.116 3.049 5.230 0x42f69 NaN

我认识到,timestamp 列是 NaN,但传感器列也不是第一列。我认为这是因为从 Excel 创建的 csv 行以逗号结尾。然后,Pandas 的行为就好像末尾有一个(空的)额外列。因为当你有名字时还有一个列,它似乎用第一列创建一个索引。这也会将列名移动一位。这种行为对我来说似乎很奇怪,但也可能是有意为之。可以肯定的是,我刚刚创建了一个 bug ticket for this, to be sure 。您使用的 pandas 版本是什么?

如果您稍微更改一下阅读代码,就可以避免这种情况:

df= pd.read_csv(io.StringIO(raw), sep=',\s*', names=colnames, index_col=False)

读完df后,看起来好多了:

   sensor      x      y      z  azimuth  elevation   roll timestamp
0 1 0.614 -7.798 -1.465 -6.117 3.050 5.231 0x42ef4
1 1 0.615 -7.798 -1.465 -6.109 3.049 5.231 0x42f05
2 1 0.616 -7.798 -1.465 -6.097 3.045 5.232 0x42f15
3 1 0.615 -7.798 -1.465 -6.108 3.048 5.232 0x42f26
4 1 0.614 -7.798 -1.465 -6.121 3.051 5.230 0x42f37
5 1 0.615 -7.798 -1.465 -6.107 3.048 5.230 0x42f47
6 1 0.616 -7.798 -1.465 -6.100 3.046 5.230 0x42f58
7 1 0.614 -7.798 -1.465 -6.116 3.049 5.230 0x42f69

现在列名称已正确分配。这是因为 index_col=False 选项告诉 pandas 不要使用文件的第一列作为索引。

如果您愿意,您还可以添加类似 usecols=range(len(colnames)) 的内容,它告诉 pandas,它应该只使用文件中与您的名称一样多的列,因此如果 excel 疯狂运行并在行尾添加数十个逗号,那么您不会遇到问题,因为数据框中有许多空且未命名的列。您应该检查您是否确实想使用 sep=',\s*' 还是 sep=','。第一个只是确保删除第 1 列值之前的前导空格...

关于python - 如何将 csv 文件中的 Nan 列读取到 python 中以便可以使用数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57122015/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com