关于#Python#的问题,如何解决?

请问如何利用Python对单个csv文件进行处理,使得每三行合并成一行
例:
原来:
1 0,2,4,5
2 3,1,2,4
3 2,3,4,5
4 3,5,6,9
5 6,3,4,5
6 2,3,4,7

预期达到的效果
1 0,2,4,5,3,1,2,4,2,3,4,5
2 3,5,6,9,6,3,4,5,2,3,4,7


import csv  # 导入csv模块

filename = 'test.csv'
# 打开CSV文件
with open(file=filename) as csvFile:
    # 2.创建reader对象
    csvReader = csv.reader(csvFile)
    rows = []
    list1 = []
    # 以循环方式列出对象内容
    for row in csvReader:
        print(f'Row {csvReader.line_num}: {row}')
        list1.extend(row)
        print(list1)
        if csvReader.line_num % 3 == 0:
            rows.append(list1)
            list1 = []
print(rows)

# 打开欲写入的文件,不存在则自动创建
with open(file='test2.csv', mode='w', newline='\n') as csvFile:
    # 2.创建writer对象
    csvWriter = csv.writer(csvFile)
    csvWriter.writerows(rows)

img

思路:
读取csv每一行数据组成一个数组,整个csv组成二维数组
就是这样[[],[],[],[],[],[],[]]。
创建一个新的csv, 循环写入数组,每三次换一行


import pandas as pd
data = [[0,2,4,5],
[3,1,2,4],
[2,3,4,5],
[3,5,6,9],
[6,3,4,5],
[2,3,4,7]]
df = pd.DataFrame(data)
df['row'] = [i//3 for i in list(df.index)]
df_out = df.set_index(['row',df.groupby(['row']).cumcount()+1]).unstack().sort_index(level=1, axis=1)
df_out.columns = df_out.columns.map('{0[0]}_{0[1]}'.format)
df_out.reset_index()

可以看下python参考手册中的 python-2to3 - 自动将 Python 2 代码转为 Python 3 代码

效果图:

img


代码:

import pandas as pd
df = pd.read_excel(r'./data.xlsx')
df['m'] = df['con']+'*'+df['tet']
dd = df.groupby('ID')['m'].agg('*'.join)
print(dd)