, если вы не возражаете против использования панд: pandas.DataFrame.stack
df = pd.read_csv(<filename>, <csv_options>)
df_stacked = df.stack()
df_stacked .to_csv(<out_file>, <csv_options>)
Если вы хотите сделать это на чистом питоне, может сработать что-то подобное:
import csv
with open(<in_filename>) as in_file, open(<out_filename>, "w") as out_file:
csv_reader = csv.DictReader(in_file, delimiter=' ', skipinitialspace=True) # or appropriate csv parameters
csv_writer = csv.writer(out_file)
csv_writer.writerow(["col", "index", "value"])
for row in csv_reader:
col = row.pop("index")
csv_writer.writerows((col, idx, value) for idx, value in row.items())