如何使用np.genfromtxt()读取csv文件?

7vhp5slm  于 2023-04-09  发布在  其他
关注(0)|答案(1)|浏览(141)

我有一个csv文件,我必须在jupyter notebook中使用np.genfromtxt()读取它。(不幸的是,我不能使用pd.read_csv()甚至其他pandas函数或方法。)与其向您展示文件,不如让我给予您一个例子。文件如下:

Item,Color,Price
iPhone,Red,"1,000"
Galaxy,Black,"1,100"

我做了一个代码,可以读取这样的csv文件:

def csv_opener(path):
    with open(path, 'r') as f:
        first_line = f.readline()
        num_col = len(first_line.split(','))
    
    return np.genfromtxt(path, delimiter=',', dtype=None, usecols=range(num_col))

你可以看到Price值中有逗号。但是由于分隔符被设置为逗号,“csv_opener”函数将文件读取为:

iPhone | Red | '"1' | '000"'

下面是问题。
1.如何让我的“csv_opener”函数将双引号的值识别为1?(不是“1|'000”' -〉'1,000')
1.我如何在阅读它们之后更改数据类型?(不是'1,000' -〉数字类型,如整数/浮点数)

wlwcrazw

wlwcrazw1#

使用Python csv模块即可。

cat phone.csv                                                                                                                                                              
Item,Color,Price
iPhone,Red,"1,000"
Galaxy,Black,"1,100"

import csv

with open('phone.csv', 'r', newline='') as csv_file:
    c_reader = csv.reader(csv_file, delimiter=',')
    for row in c_reader:
        print(row)

['Item', 'Color', 'Price']
['iPhone', 'Red', '1,000']
['Galaxy', 'Black', '1,100']

CSV是一种文本格式,因此您将从中获得的唯一类型是字符串。您可以创建类似于数据库表的东西,并将数据传输到特定类型。尽管这取决于字符串表示是否一致并且对于接收类型正确。

相关问题