python - 读取 .csv 文件并根据特定列中的相等值连接值

标签 python list csv

我有一个包含三列(A、B 和 C)的 csv 文件,它们的值如下图所示: CSV Table

1,2,4
1,257,5
1,258,6
1,8,7
1,260,8
2,24,9
2,26,10
2,234,11
3,14,12
3,22,13
3,78,14

我想用 "-" 连接 B 列中的值,而它们在 A 列中的值是相同的。因此,预期输出如下:

["2-257-258-8-260", "24-26-234", "14-22-78"]

任何人都可以帮助我如何获得这些结果。

提前致谢

最佳答案

这是一个普通的 Python 解决方案。

我们使用csv 阅读器来读取数据。在我的代码中,我从名为 file_data 的行列表中读取,但您可以将 file_data 更改为打开的文件对象。

我们将数据存储到列表字典中,A 列值作为键,B 列值附加到列表中。

然后我们按顺序遍历键,将 B 数据连接成所需形式的字符串。

import csv
from collections import defaultdict

file_data = '''\
1,2,4
1,257,5
1,258,6
1,8,7
1,260,8
2,24,9
2,26,10
2,234,11
3,14,12
3,22,13
3,78,14
'''.splitlines()

reader = csv.reader(file_data)
data = defaultdict(list)
for a, b, c in reader:
    #print(a, b, c)
    data[a].append(b)

out = ['-'.join(data[k]) for k in sorted(data.keys())]
print(out)

输出

['2-257-258-8-260', '24-26-234', '14-22-78']

关于python - 读取 .csv 文件并根据特定列中的相等值连接值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50619573/

相关文章:

Python:根据第一列和第二列向csv文件添加列

python - Mako、Babel 和字符串插值

python - CSV 数据到 MySQL 表

用于创建和操作列表的 Python 函数

python - 如何创建元组列表

python - 如何从存储在元组列表列表中的两个元素元组中制作两个列表

java - 常规/katalon : Validate sequence of list

r - 使用 R 比较日期

python - 在 Bokeh python 中更改工具提示颜色的正确方法是什么?

Python 3 : os. walk() 文件路径 UnicodeEncodeError: 'utf-8' codec can't encode: surrogates not allowed