将元组列表保存到 python 中的 csv 文件

Save a list of tuple to csv file in python

我有一个元组列表,如下所示:

data = [(1633098324445950024, 139.55, 15, [14, 37, 41]),
        (1633098324445958000, 139.55, 100, [14, 41]),
        (1633098324445958498, 139.55, 60, [14, 37, 41]),
        (1633098324446013523, 139.55, 52, [14, 37, 41]),
        (1633098324472392943, 139.555, 100),
        (1633098324478972256, 139.555, 100)]

我正在尝试将其保存在 csv 文件中:

def save_csv(data, path, filename):
    with open(os.path.join(path, str(filename) + '_data.csv'), "w") as outfile:
        outfile.write("\n".join(f"{r[0]},{r[1]},{r[2]},{r[3]}" for r in data))

save_csv(data, path, filename)

我得到 IndexError:

    outfile.write("\n".join(f"{r[0]},{r[1]},{r[2]},{r[3]}" for r in data))

IndexError: tuple index out of range

我希望结果如下所示:

import csv

data = [(1633098324445950024, 139.55, 15, [14, 37, 41]),
        (1633098324445958000, 139.55, 100, [14, 41]),
        (1633098324445958498, 139.55, 60, [14, 37, 41]),
        (1633098324446013523, 139.55, 52, [14, 37, 41]),
        (1633098324472392943, 139.555, 100),
        (1633098324478972256, 139.555, 100)]

with open("csv.csv", "w") as f:
    csv_writer = csv.writer(f)
    for mytuple in data:
        csv_writer.writerow(mytuple)

您有可变数量的列 - r[3] 不会总是存在。这是 pandas 的一个很好的用例,它将根据需要添加默认值。我有点微妙,但 pandas 也会引用最后一列,以便稍后的 reader 会知道忽略其嵌入的逗号。

import pandas as pd

data = [(1633098324445950024, 139.55, 15, [14, 37, 41]),
        (1633098324445958000, 139.55, 100, [14, 41]),
        (1633098324445958498, 139.55, 60, [14, 37, 41]),
        (1633098324446013523, 139.55, 52, [14, 37, 41]),
        (1633098324472392943, 139.555, 100),
        (1633098324478972256, 139.555, 100)]

pd.DataFrame(data).to_csv("test.csv")