PYTHON:从csv工作表读取

2024-10-03 00:27:36 发布

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

我想读一份csv表格。到目前为止,我有一个循环,它读取工作表中的所有行,并为每一行创建一个特定的txt文件

with openCSV(file) as newData:
    reader = csv.reader(newData)
    next(reader)
    dictData = {}
    for i, row in enumerate(reader, 1)
        dictData = {'articleID' = row[0], 'Desc':row[1], ....}

那很好

现在我想要的是:

如果有更多具有相同编号的articleID,则应将其添加到一个txt文件中

我该怎么做

我的CSV文件:

enter image description here


Tags: 文件csvtxtforaswithreader表格
2条回答

下面。代码创建3个csv文件。每个id对应一个

import csv
from collections import defaultdict

data_by_id = defaultdict(list)
with open('c:\\temp\\temp.csv')as f:
    reader = csv.reader(f)
    next(reader)
    for row in reader:
        data_by_id[row[0]].append(row[1:])

for _id, data in data_by_id.items():
    with open('c:\\temp\\{}.csv'.format(_id), 'w') as f:
        f.write('id,description,price\n')
        for line in data:
            line.insert(0, _id)
            f.write(','.join(line) + '\n')

temp.csv

id,description,price
12,desc1,12.4
13,desc13,13.4
12,desc132,312.4
13,desc1er,5.8
11,desc1wewe,77.9

我认为pandas非常适合这份工作

安装 pip3 install pandas

用法

import pandas as pd

df = pd.read_csv("data.csv")
df[df.duplicated(['ID'], keep=False)] #gives you all the duplicates

keep:{'first','last',False},默认值为'first'

  • 第一:将重复项标记为True,但第一次出现的除外
  • 最后:将重复项标记为True,但最后一次出现的除外
  • False:将所有副本标记为True

相关问题 更多 >