首页 > 解决方案 > 每次使用 pandas 触发脚本时附加到 csv 文件

问题描述

我有一个字典列表。因此,每次触发脚本时,列表 ie'my_list' 都会附加到 csv 中。

例如。示例截图

但是,当第二次触发脚本时,第二组值列名再次被推送。

例如。example_2nd_trigger_screenshot

我想使用熊猫的CSV就像例如。requirements_screenshot也带有列名。

每次脚本运行时都会有一些 3 个字段值,例如 'fff'、45、'rrr' 并且每次都不同。

因此,我尝试创建 dict 列表,然后将列表附加到 csv 中,但结果不如预期。

这是代码:

import pandas as pd
my_list = [{'name':'someuser','id':111}]
def generate_csv_report(my_list):
    try:
        filepath = os.path.join("C:\\Users\\user\\Desktop",'user.csv')
        df = pd.DataFrame(my_list)
        df.to_csv(filepath, mode='a', index=False)
    except Exception as e:
        raise Exception(str(e))

generate_csv_report(my_list)

有人可以帮我解决问题吗:)

标签: pythonpandasnumpydataframeexport-to-csv

解决方案


import pandas as pd
import os
from csv import DictWriter

my_dict = {'name':'someuser','id':111}
filepath = os.path.join("C:\\Users\\user\\Desktop",'user.csv')

def generate_csv_report(file_path, dict_of_elem, fieldnames):
    # Open file in append mode
    try:
        with open(file_path, 'a+', newline='') as write_obj:
        # Create a writer object from csv module
        dict_writer = DictWriter(write_obj, fieldnames=fieldnames)
        # Add dictionary as wor in the csv
        dict_writer.writerow(dict_of_elem)
    except Exception as e:
        raise Exception(str(e))
for i in range(5):
    generate_csv_report(filepath, my_dict, my_dict.keys())

我希望这个解决方案对你有用。请注意,我已将列表替换为字典。


推荐阅读