Python进行数据匹配和合并

2024-04-23 18:21:16 发布

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

输入文件是一个以制表符分隔的unicode txt文件

a  A   e  f  m
b  B   g  h
c  C   i  j
b  B   k  l

我想按第一列和第二列进行匹配并合并。所以我想

a  A   e  f  m
b  B   g  h     k  l
c  C   i  j

代码必须检测输入中的最大列数。因为在这个例子中是5,“kl”是从第6列开始的。你知道吗

事实上,当它们都是数字的时候,我几乎可以用Matlab来实现这一点。但是,当它们是字母时,Matlab在处理unicode方面非常糟糕,尽管我读到了stackoverflow关于如何在Matlab中处理unicode的文章,我还是放弃了。所以我现在转向python。你知道吗

使用excelvba似乎是可行的,但是由于数据量太大,所以我猜python会比excelvba更快(我猜得对吗?)你知道吗


Tags: 文件代码txt字母文章unicode数字stackoverflow
1条回答
网友
1楼 · 发布于 2024-04-23 18:21:16

我个人会将输入/处理逻辑与输出/格式化逻辑分开。你知道吗

def match_merge(filename):
    with open(filename) as f:
        c = csv.reader(f,delimiter='\t')
        d = defaultdict(list)
        for line in c:
            d[(line[0],line[1])].append(line[2:])
    return d

演示:

In [17]: import pprint

In [18]: pprint.pprint(match_merge('tabdelim'))
{('a', 'A'): [['e', 'f', 'm']],
 ('b', 'B'): [['g', 'h'], ['k', 'l']],
 ('c', 'C'): [['i', 'j']]}

您可以使用dictdefaultdict)返回的match_merge并轻松地将其写入tab delim文件。因为我不太了解你的输出需求,所以我省略了那部分。你知道吗

相关问题 更多 >