Python脚本,用于将具有多个值的dict列表写入多个文件

2024-04-25 07:28:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个目录如下所示。我想写dicts到多个excel或csv文件取决于键。如果密钥相同,它们应该在一个文件中

我的目录:

[{'john': ['0', '100']}, {'john': ['4', '101']}, {'john': ['0', '102']}, {'mary': ['2', '100']}, {'mary': ['5', '101']}, {'mary': ['4', '102']}, {'mary': ['1', '103']}, {'sam': ['4', '100']}, {'sam': ['3', '101']}, {'sam': ['12', '102']}, {'paul': ['2', '100']}, {'hay': ['2', '100']}, {'hay': ['1', '102']}, {'mercy': ['4', '101']}]

到目前为止我的代码是:

x = []
i = 0
for ii, line in enumerate(my_list_of_dicts):
    with open("out_%s.csv" % i, 'w+') as f:
        if line.keys() not in x:
            x.append(line.keys())
            i += 1
            pd.DataFrame.from_dict(data=line, orient='index').to_csv(f, header=False)
        else:
            pd.DataFrame.from_dict(data=line, orient='index').to_csv(f, header=False)

结果:

我得到所需数量的文件,但不是内容

期望值:

我希望得到与每把钥匙(约翰、玛丽、萨姆、杰伊、保罗、海伊和梅西)对应的文件,内容如下。以约翰为例:

john, 0, 100 
john, 4, 101
john, 0, 102

我不知道该怎么做,或者我是否需要列举。谢谢


Tags: 文件csvinfrom目录dataframesamline
1条回答
网友
1楼 · 发布于 2024-04-25 07:28:58

更好的方法是将数据聚合到单个数据帧中,然后迭代groupby对象:

# construct dataframe from list of dictionaries
df = pd.DataFrame([[k, *v] for dct in L for k, v in dct.items()])
df[[1, 2]] = df[[1, 2]].apply(pd.to_numeric)

# iterate groupby object and export to separate CSV files
for key, df_key in df.groupby(0):
    df_key.to_csv(f'{key}.csv', index=False, header=False)

相关问题 更多 >