【问题标题】:Save multiple dataFrames in a loop using to_pickle使用 to_pickle 在循环中保存多个数据帧
【发布时间】:2020-04-08 17:20:06
【问题描述】:

嗨,我有 4 个 pandas 数据框:df1、df2、df3、df4。 我喜欢做的是使用to_pickle 迭代(使用for 循环)保存此数据帧。 我所做的是这样的:

out = 'mypath\\myfolder\\'

r = [ orders, adobe, mails , sells]
for i in r:
    i.to_pickle( out +   '\\i.pkl')

该命令很好,但它不会用他的名字保存每个数据库,而是覆盖相同的数据库i.pkl(我认为是因为我的代码不正确) 似乎无法用他的名字重命名每个数据库(例如,for循环中的订单orders以名称i.pkl保存,以此类推,orders数据框涉及) 我希望保存 4 个数据框,并在对象 r 中插入名称(因此:orders.pkl、adobe.pkl、mails.pkl、sells.pkl)

我该怎么做?

【问题讨论】:

    标签: python python-3.x pandas dataframe pickle


    【解决方案1】:

    你不能对变量名进行字符串化(这不是你通常会做的事情),但你可以做一些简单的事情:

    import os
    
    out = 'mypath\\myfolder\\'
    
    df_list = [df1, df2, df3, df4]
    for i, df in enumerate(df_list, 1):
        df.to_pickle(os.path.join(out, f'\\df{i}.pkl')
    

    如果您想为文件提供自定义名称,我的建议是:使用字典。

    df_map = {'orders': df1, 'adobe': df2, 'mails': df3, 'sells': df4}
    for name, df in df_map.items():
        df.to_pickle(os.path.join(out, f'\\{name}.pkl')
    

    【讨论】:

    • 谢谢,如果我的 df 列表包含不同的名称怎么办? (例如:df_lis=[ orders, adobe, mails , sells])
    • @lucapellerossapelles 除非您使用字典(请参阅编辑),否则没有干净的方法可以做到这一点。
    • 这是真的,因为 DataFrame 没有 name 属性。您必须自己处理名称。字典是这里的正确选择。另请参阅question
    猜你喜欢
    • 2021-01-03
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-22
    • 1970-01-01
    相关资源
    最近更新 更多