Python Itertools groupby-将行写入csv文件

时间:2019-03-08 11:10:11

标签: python-3.x group-by

我是Python的新手,如果这是一个愚蠢的问题,我深表歉意。 我有一个文本文件,输入以下内容:

  • Apple Apple1
  • Apple Apple2
  • Aaron Aaron1
  • Aaron Aaron2
  • Aaron Aaron3
  • 树Tree1

我有以下代码:

import csv
import sys
from itertools import groupby

with open('File.txt', 'r', encoding='utf-8') as csvfile:
    reader = csv.reader(csvfile, delimiter='\t')
    next(reader, None)
    a = [[k] + [x[1]  for x in g] for k, g in groupby(reader, key=lambda row: row[0])]
    sys.stdout=open('Out.txt','w', encoding='utf-8')
    print (str(a))

我想要实现的目标:

  • Apple Apple1,Apple2
  • Aaron Aaron1,Aaron2,Aaron3
  • 树Tree1

但是,我现在要得到的输出是列表形式的,而我希望它是每行打印一次。我该如何实现?

1 个答案:

答案 0 :(得分:0)

怎么样

import pandas as pd

df = pd.read_csv('File.txt',delimiter=' ' , header=None)
grouped = df.groupby(0).agg(lambda col: ', '.join(col)).to_records()

for group in grouped:
    print(group[0] + ' ' + group[1])