gpt4 book ai didi

python - 在 Pandas 中处理多个数据帧的优雅方式

转载 作者:行者123 更新时间:2023-11-30 22:23:42 26 4
gpt4 key购买 nike

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

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 循环吗?谢谢!

最佳答案

DRY :你不应该多次写同样的东西(实际上不止一次)。

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

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)

关于python - 在 Pandas 中处理多个数据帧的优雅方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47991138/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com