gpt4 book ai didi

读取文件时python char替换

转载 作者:太空宇宙 更新时间:2023-11-04 05:20:51 25 4
gpt4 key购买 nike

我有一个包含以下组成的文本/csv 文件。 800万条记录或更多

1, 10721, 12478, 5, 0, 0, 0,"A1","0555"
1, 10722, 12479, 1, 0, 0, 0,"A2","1555"

其中前 7 列是整数,然后第 7 和第 8 列用 "字符引用。我想将第 8 列读取为整数,因为它是一天中的时间。

我的问题:如何删除这个 "字符并将此列用作整数而不是字符串,同时将计算/ram 保持在最小值。

目前我还在使用 numpy.genfromtxt。我注意到 dtype 是一个选项,但如果我为最后一列提供整数,它只会将其转换为 -1 而不是整数。

提前致谢!

最佳答案

我想到的一件事(请谨慎使用,因为我对 NumPy 几乎一无所知)是为第 8 列创建您自己的转换器(第一个是零):

假设您将数据放在一个文件中...eeeeermmm...称为 stack_063.csv。你可以这样做:

data = numpy.genfromtxt("stack_063.csv", dtype=int, delimiter=',',
converters={
8: lambda x: float(x.replace('"', '')) / 100
})
print(data)

这样,您将获得如下列表:

[(1, 10721, 12478, 5, 0, 0, 0, -1, 5.55)
(1, 10722, 12479, 1, 0, 0, 0, -1, 15.55)]

如果您想要一个 int,只需让您的转换器为:lambda x: int(x.replace('"', ''))

编辑:

更多地使用 NumPY,我发现您可能还可以做另一件事。那就是将第 8 列的数据类型声明为 numpy.object,然后从中获取实际的 datetime.time:

import numpy
import datetime

data_types = [
numpy.uint16,
numpy.int_,
numpy.int_,
numpy.int_,
numpy.int_,
numpy.int_,
numpy.int_,
numpy.dtype((str, 35)),
numpy.object_
]
data = numpy.genfromtxt("stack_063.csv", dtype=data_types, delimiter=',',
converters={
7: lambda x: x.replace('"', ''),
8: lambda x: datetime.datetime.strptime(x, '"%H%M"').time()
})
print(data)

这给出:

[(1, 10721, 12478, 5, 0, 0, 0, 'A1', datetime.time(5, 55))
(1, 10722, 12479, 1, 0, 0, 0, 'A2', datetime.time(15, 55))]

但是,我真的不知道这是否是个好主意......

关于读取文件时python char替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40369257/

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