分层分组文本文件中的列值

Hierarchically grouping column values in text file

有没有办法按列对文本文件中的值进行分组? 我有一个文本文件,其值类似于

a,b,c
a,x,y
a,z,m
b,x,y
b,z,m

并且需要将值分组到唯一的第一列,如下所示。

a, b;x;z, c;y;m 
b, x;z, y;m

假设您的文本文件每行只有三列,

s1, s2, s3 = set(), set(), set()
with open('file.txt') as txt_file:
    lines = txt_file.readlines()
    for line in lines:
        line = line.strip()
        c1, c2, c3 = line.split(',')
        s1.add(c1)
        s2.add(c2)
        s3.add(c3)

col1 = ';'.join(s1)
col2 = ';'.join(s2)
col3 = ';'.join(s3)

print("{}, {}, {}".format(col1, col2, col3))

所以如果文件file.txt的内容是:

a,b,c
a,x,y
a,z,m

输出:

a, b;z;x, y;m;c

您可以尝试使用 pandas

myFile.txt

a,b,c
a,x,y
a,z,m
b,x,y
b,z,m

import pandas as pd
with open('myFile.txt', 'r') as xf:
    data = xf.read()
    print("Input data", data, sep='\n')
d = [values.split(',') for values in data.split('\n') if values != ""]
df = pd.DataFrame(data=d, columns = list('ABC'))
result = df.groupby(['A']).sum()
result = result.applymap(lambda x: ';'.join(x))
print("\nSolution", result, sep="\n")

输出:

Input data
a,b,c
a,x,y
a,z,m
b,x,y
b,z,m


Solution
       B      C
A              
a  b;x;z  c;y;m
b    x;z    y;m

如果您不关心使用分号和逗号进行格式化,一个简单的方法是将它们分组到字典中:

with open('sample.txt') as f:
    lines = f.readlines()
    dic = {}
    for line in lines:
        lst = line.strip().split(',')
        dic[lst[0]] = dic.get(lst[0], []) + lst[1:]

print(dic)
# {'a': ['b', 'c', 'x', 'y', 'z', 'm'], 'b': ['x', 'y', 'z', 'm']}