Python 如何基于关键字合并csv字段
我有以下清单:Python 如何基于关键字合并csv字段,python,csv,Python,Csv,我有以下清单: key,value 1,"1" 1,"2" 1,"3" 2,"1" 2,"2" 2,"3" 2,"4" 2,"5" 3,"1" 3,"2" 3,"3" 如何基于具有相同键合并值,使其成为: key,value 1,"1,2,3" 2,"1,2,3,4,5" 3,"1,2,3" 我使用的代码来自,但结果是: 1,"1",1,"2",1,"3" 3,"1",3,"2",3,"3" 2,"1",2,"2",2,"3",2,"4",2,"5" IIUC,如果您想在没有业务案例的情况
key,value
1,"1"
1,"2"
1,"3"
2,"1"
2,"2"
2,"3"
2,"4"
2,"5"
3,"1"
3,"2"
3,"3"
如何基于具有相同键合并值,使其成为:
key,value
1,"1,2,3"
2,"1,2,3,4,5"
3,"1,2,3"
我使用的代码来自,但结果是:
1,"1",1,"2",1,"3"
3,"1",3,"2",3,"3"
2,"1",2,"2",2,"3",2,"4",2,"5"
IIUC,如果您想在没有业务案例的情况下看到这样的可能性,下面是您可以使用具有键value的
pandas数据帧
d执行的操作:
d.groupby(['key'])['value'].apply(lambda x: ','.join(x)).reset_index()
key value
0 1 1,2,3
1 2 1,2,3,4,5
2 3 1,2,3
您可以尝试以下方法:
s = """
key,value
1,"1"
1,"2"
1,"3"
2,"1"
2,"2"
2,"3"
2,"4"
2,"5"
3,"1"
3,"2"
3,"3"
"""
import itertools
new_data = [i.split(',') for i in s.split('\n')][2:-1]
new_data = [[int(a), b[1:-1]] for a, b in new_data]
final_data = [(a, ','.join([d for c, d in list(b)])) for a, b in itertools.groupby(new_data, key=lambda x:x[0])]
输出:
[(1, '1,2,3'), (2, '1,2,3,4,5'), (3, '1,2,3')]
您也可以尝试使用
defaultdict
:
In [15]: li = [(1, '1'), (1, '2'), (1, '3'), (2, '1'), (2, '2'), (2, '3'), (2, '4'), (2, '5'), (3, '1'), (3, '2'), (3, '3')]
In [16]: dic = defaultdict(list)
In [17]: for key, value in li:
...: dic[key].append(value)
In [18]: dic
Out[18]:
defaultdict(list,
{1: ['1', '2', '3'],
2: ['1', '2', '3', '4', '5'],
3: ['1', '2', '3']})
我看不出你在哪里张贴了你一直在编码的代码?