Python在ex中读取特定的单元格值

2024-09-28 19:08:23 发布

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

我有一个名为“123.csv”的exel文件,它是运行PROM功能时得到的输出,由两列“case”和“event”组成。我想通过根据案例分组事件来修改这个输出。更具体地说,我想编写一个python脚本,将属于同一个案例的事件分组,并合并到一个新的单元中,不匹配初始矩阵的长度是。可以有人能告诉我一些情况吗? curent and desiret output

import csv

with open('123.csv', 'rb') as csvfile:
    spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
    for row in spamreader:
       print ', '.join(row).replace(',',' ').replace('"',' ') 

这是我写的一部分,但它只读取文件并删除一些穿孔


Tags: 文件csvcsvfile功能脚本event事件replace
2条回答

您可以使用itertools中的groupby为您完成这项工作。例如:

from itertools import groupby

current = [(101, 'A'), (101, 'B'), (101, 'Y'), (102, 'C'), (102, 'D'), (102, 'U')]
desired = []

for key, group in groupby(current, lambda x: x[0]):
    lst = [element[1] for element in group]
    grouped = (key, lst)
    desired.append(grouped)

print(desired)

基本上,你给groupby一个你现在拥有的数组和一个接受数组第一个元素的lambda函数(数组需要排序)。Groupby将使用第一个元素对元素进行分组。在

使用简单的csv&defaultdict(python3)很容易实现

你的意见是

case,event
101,A
101,X
101,Y
102,B
102,C
103,Z

代码:

^{pr2}$

输出

case,event
103,Z
101,"A,X,Y"
102,"B,C"

相关问题 更多 >