如何在python中将逗号分隔值文件中的列转换为行?

如何在python中将逗号分隔值文件中的列转换为行?,python,arrays,loops,Python,Arrays,Loops,我想在csv文件中将列作为行,而不使用熊猫转置。在这里,我已经在中指定了列,并将它们放在特定的数组中,但我希望循环动态地获取数据。另外,我想在文本文件中以逗号分隔的值而不是数组的形式打印它们。关于: 我希望循环动态地获取数据 如果不读取整个csv文件,则无法转换列和行。我不知道你是不是这个意思 为了转换行和列,假设您的文件如下所示 row1 col1,row1 col2,row1 col3 row2 col1,row2 col2,row2 col3 row3 col1,row3 col2,row

我想在csv文件中将列作为行,而不使用熊猫转置。在这里,我已经在中指定了列,并将它们放在特定的数组中,但我希望循环动态地获取数据。另外,我想在文本文件中以逗号分隔的值而不是数组的形式打印它们。

关于:

我希望循环动态地获取数据

如果不读取整个csv文件,则无法转换列和行。我不知道你是不是这个意思

为了转换行和列,假设您的文件如下所示

row1 col1,row1 col2,row1 col3
row2 col1,row2 col2,row2 col3
row3 col1,row3 col2,row3 col3
row4 col1,row4 col2,row4 col3
然后您可以像这样在嵌套列表中读取文件

>>> with open('file.csv') as f: rows_as_rows = [row[:-1].split(',') for row in f]
>>> print(rows_as_rows)
[
    ['row1 col1', 'row1 col2', 'row1 col3'],
    ['row2 col1', 'row2 col2', 'row2 col3'],
    ['row3 col1', 'row3 col2', 'row3 col3'],
    ['row4 col1', 'row4 col2', 'row4 col3']
]
加载所有行后,可以对其进行转置。可以避免使用列表,但内部列表将改为元组

>>> cols_as_rows = [list(v) for v in [*zip(*rows_as_rows)]]
>>> print(cols_as_rows)
[
    ['row1 col1', 'row2 col1', 'row3 col1', 'row4 col1'],
    ['row1 col2', 'row2 col2', 'row3 col2', 'row4 col2'],
    ['row1 col3', 'row2 col3', 'row3 col3', 'row4 col3']
]
您可以使用

>>> as_text = '\n'.join([','.join([v for v in col]) for col in cols_as_rows])
>>> print(as_text)
row1 col1,row2 col1,row3 col1,row4 col1
row1 col2,row2 col2,row3 col2,row4 col2
row1 col3,row2 col3,row3 col3,row4 col3
如果不需要对数据执行任何其他操作,也可以在一行中执行:

with open('file.csv') as f: print('\n'.join([','.join([v for v in col]) for col in [*zip(*[row[:-1].split(',') for row in f])]]))