Python,循环文件名的可变部分

2024-09-28 01:22:40 发布

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

我有一组非常类似的命令,它们都是这样的(df表示数据帧):

df1_part1=...
df1_part2=...
...
df1_part5=...
df2_part1=...

我想为它做一个循环,如下所示:

for i in range(1,5):
for j in range(1,5):
df%i_part%j=...

当然,它对%不起作用。但我想这必须是一种简单的方法。 你能帮我吗


Tags: 数据方法in命令dfforrangedf1
3条回答

您可以尝试以下选项之一:

  1. 创建映射df的字典,并通过数据帧的名称访问它:
mapping = {"df1_part1": df1_part1, "df1_part2": df1_part2}
for i in range(1,5):
    for j in range(1,5):
        mapping[f"df{i}_part{j}"] = ...
  1. 使用globals动态访问变量:
df1_part1=...
df1_part2=...
...
df1_part5=...
df2_part1=...

for i in range(1,5):
    for j in range(1,5):
        globals()[f"df{i}_part{j}"] = ...

一种方法是在列表列表中收集数据帧并在该列表上迭代,而不是尝试动态解析python代码

df1_part1=...
df1_part2=...
...
df1_part5=...
df2_part1=...

dflist = [[df1_part1, df1_part2, df1_part3, df1_part4, df1_part5],
          [df2_part1, df2_part2, df2_part3, df2_part4, df2_part5]]
for df in dflist:
    for df_part in df:
        # do something with df_part

假设这个过程是数据准备的一部分,我想提一下,只要可能,您应该尝试使用“数据准备管道”。否则,代码在几个月后就会变得一团糟

有几种方法可以解决这个问题

字典是处理这个问题最直接的方法

df_parts = {
            'df1' : {'part1': df1_part1, 'part2': df1_part2,...,'partN': df1_partN},
            'df2' : {'part1': df1_part1, 'part2': df1_part2,...,'partN': df2_partN},
            '...' : {'part1': ..._part1, 'part2': ..._part2,...,'partN': ..._partN},
            'dfN' : {'part1': dfN_part1, 'part2': dfN_part2,...,'partN': dfN_partN},
           }

# print parts from `dfN`
for val in for df_parts['dfN'].values():
    print(val)

# print part1 for all dfs
for df in df_parts.values():
    print(df['part1'])

# print everything
for df in df_parts:
    for val in df_parts[df].values():
        print(val)

这种方法的好处是,您可以遍历整个字典,但不包括range,这以后可能会让人困惑。此外,最好将每个df_部分直接分配给dict,而不是分配可能使用一次或两次的N*N变量。在这种情况下,您只需使用1变量,并在进行过程中重新分配:

# code using df1_partN
df1 = df_parts['df1']['partN']
# stuff to do
# happy? checkpoint
df_parts['df1']['partN'] = df1

相关问题 更多 >

    热门问题