Python 在Pandas中使用多个数据帧的优雅方式

Python 在Pandas中使用多个数据帧的优雅方式,python,python-3.x,pandas,Python,Python 3.x,Pandas,我有一段代码,目前看起来像这样: if os.path.isfile('D:\\df_1'): df_1 = pd.read_pickle('D:\\df_1') else: df_1 = pd.DataFrame(columns = ['Date', 'Location', 'Product']) if os.path.isfile('D:\\df_2'): df_2 = pd.read_pickle('D:\\df_2') else: df_2 = pd.Da

我有一段代码,目前看起来像这样:

if os.path.isfile('D:\\df_1'):
    df_1 = pd.read_pickle('D:\\df_1')
else:
    df_1 = pd.DataFrame(columns = ['Date', 'Location', 'Product'])
if os.path.isfile('D:\\df_2'):
    df_2 = pd.read_pickle('D:\\df_2')
else:
    df_2 = pd.DataFrame(columns = ['Date', 'Location', 'Product'])

[...]

if os.path.isfile('D:\\df_20'):
    df_20 = pd.read_pickle('D:\\df_20')
else:
    df_20 = pd.DataFrame(columns = ['Date', 'Location', 'Product'])
基本上,我所做的是检查数据帧是否已经存在,是否加载,否则创建一个空的数据帧。我需要这样做,因为代码将尝试向每个数据帧追加新数据。因此,我将有如下内容:

[retrieve new data and clean it]
df_1 = pd.concat([df_1, df_1_new_data])
对我拥有的所有20个数据帧执行此操作(它们包含不同的内容,因此我希望将它们分开),然后保存它们,以便在第二天再次检索它们并向它们添加新数据:

df_1.to_pickle('D:\\df_1')
df_2.to_pickle('D:\\df_2')
[...]
df_20.to_pickle('D:\\df_20')
现在,使用20个数据帧已经相当繁重了,但我可能还需要添加更多数据帧!有没有办法读取不同的数据帧,然后将它们写入for循环或类似的东西中的pickle?因此,为了将我现在拥有的许多代码行减少到一个简单的2行for循环?谢谢大家!

:同一篇文章不应该写很多次(实际上不止一次)

使用函数、循环和其他基本语言工具

def create_df(path):
    if os.path.isfile(path):
        df = pd.read_pickle(path)
    else:
        df = pd.DataFrame(columns = ['Date', 'Location', 'Product'])
    return df

all_paths = (...)

# dict where key is you path and value is dataframe    
all_df = {p: create_df(p) for p in all_paths}

for p in all_paths:
    all_df[p].to_pickle(p)

为什么不在循环中执行这些操作?我需要动态创建变量名称,我知道这样做是不好的。使用字典。