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