【问题标题】:Python 3 ~ How to obtain same result using CSV modulePython 3 ~ 如何使用 CSV 模块获得相同的结果
【发布时间】:2020-11-27 19:21:03
【问题描述】:

我的代码中有这个:

with file:

csv = csv.reader(file,delimiter=",")



df = pd.read_csv(argv[1])
data = df.loc[:, df.columns != 'name'].to_numpy().tolist()
data.insert(0, df["name"].tolist())

当我运行print(data) 时,output 结果是这样的:

[['Alice', 'Bob', 'Charlie'], [2, 8, 3], [4, 1, 5], [3, 2, 5]]

我很想知道如何使用 CSV 模块或 for 循环获得相同的结果

内容:

name,AGATC,AATG,TATC
Alice,2,8,3
Bob,4,1,5
Charlie,3,2,5

【问题讨论】:

  • 你能编辑你的问题并把这个CSV文件的内容放在那里吗?
  • 完成,在原始代码中它不包括标题(名称,AGATC,AATG,TATC)

标签: python-3.x list csv file


【解决方案1】:
import csv

with open('file.csv', newline='') as csvfile:
    csvreader = csv.reader(csvfile)
    next(csvreader) # skip headers
    names = []
    data = []
    for row in csvreader:
        names.append(row[0])
        data.append(list(map(int, row[1:])))

print([names] + data)

打印:

[['Alice', 'Bob', 'Charlie'], [2, 8, 3], [4, 1, 5], [3, 2, 5]]

编辑:

import csv

with open('file.csv', newline='') as csvfile:
    csvreader = csv.reader(csvfile)
    next(csvreader) # skip headers
    names = []
    data = []
    for row in csvreader:
        names.append(row[0])
        data.append(list(map(int, row[1:])))

all_data = [names] + data

print(all_data[0])
print(all_data[1])

打印:

['Alice', 'Bob', 'Charlie']
[2, 8, 3]

【讨论】:

  • 如何合并名称和数据,以便在我编写打印数据 [0] 时输出所有名称和数据 [1] 输出 [2、8、3] 等等,我尝试了列。 append(names+data) 但它使一大块数据不是列表
【解决方案2】:

这对你有用吗?

import csv
from sys import argv

def csv_to_list_of_lists(csv_file):
    
    with open(csv_file) as f:
        reader = csv.reader(f, delimiter=',')

        number_of_columns = len(next(reader))#Notice how next() enables to skip the header row
        
        data = [[] for x in range(number_of_columns)] 
        
        for index, line in enumerate(reader):
            data[0].append(line[0])
            values = [int(x) for x in line[1:]]
            data[index+1] = values

    return data

output = csv_to_list_of_lists(argv[1])
print(output)

结果:

[['Alice', 'Bob', 'Charlie'], [2, 8, 3], [4, 1, 5], [3, 2, 5]]

【讨论】:

  • 我希望它输出 [['Alice', 'Bob', 'Charlie'], [2, 8, 3], [4, 1, 5], [3, 2, 5]] 不是 [['Alice', 'Bob', 'Charlie'], ['2', '4', '3'], ['8', '1', '2'], ['3 ', '5', '5']] (不同的数字)
猜你喜欢
  • 1970-01-01
  • 2021-02-17
  • 1970-01-01
  • 2018-10-24
  • 2021-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多