读取csv时转换为字符串的所有值

2024-09-29 21:58:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个CSV文件(https://easyupload.io/fehzj5),我必须用python分析它。 为了处理数据,我将其转换为列表列表:

import csv


def read_dataset(file):
    rows = []
    with open(file, 'r') as csvfile:
        csvreader = csv.reader(csvfile, delimiter=',')
        for row in csvreader:
            rows.append(row)
    return rows

CSV文件完全由浮动组成,我通过在文本编辑器中打开该文件进行了双重检查。 然而,每当我从read_dataset的输出调用一个值时,它总是float类型

例如。 enter image description here

我假设问题出在我的read_dataset代码的某个地方。非常感谢任何帮助


Tags: 文件csvcsvfilehttpsio列表readdataset
3条回答

documentation开始:

csv.QUOTE_NONNUMERIC
Instructs writer objects to quote all non-numeric fields.

Instructs the reader to convert all non-quoted fields to type float.

由于您的示例数据都是不带引号的浮点:

import csv

with open('downloads/stackoverflow_data.csv') as csvfile:
    csvreader = csv.reader(csvfile,quoting=csv.QUOTE_NONNUMERIC)
    rows = list(csvreader)

print(rows[0][:10])

输出:

[693.366, 692.038, 690.964, 690.964, 689.796, 687.634, 686.228, 685.072, 685.072, 683.856]

CSV文件中的数字数据存储为字符串。这里没有“转换为字符串”操作,因为数据已经是字符串csv.reader()无法知道哪些单元格是数字,因此它不会将任何内容转换为浮点。你需要自己去做

您可以使用pandas方法^{},然后将头的数据类型指定为float,然后转换数据帧

import pandas as pd
import numpy as np

def read_dataset(file):    
    dtype_data = {'col1': np.float64, 'col2': np.float64}
    df = pd.read_csv(file, delimiter=",", dtype=dtype_data)
    return df

相关问题 更多 >

    热门问题