在嵌套字典中循环

时间:2021-04-21 19:00:49

标签: python-3.x pandas loops dictionary

import pandas as pd

df_1 = pd.DataFrame([[1, 2], [3, 4]], columns=list('AB'))

df_2 = pd.DataFrame([[10, 20], [30, 40]], columns=list('CD'))


df_1_columns = ['A', 'B']

df_2_columns = ['C', 'D']


Tables = {"Table_1" : (df_1 , df_1_columns), "Table_2": (df_2 , df_2_columns)}

for Table in Tables:
    df_table = Tables[Table][0][Tables[Table][1][0]]
    print(df_table)

结果,我得到:

0    1
1    3
Name: A, dtype: int64

0    10
1    30
Name: C, dtype: int64

结果,我想要:

0    1
1    3
Name: A, dtype: int64

0    2
1    4
Name: B, dtype: int64

0    10
1    30
Name: C, dtype: int64

0    20
1    40
Name: D, dtype: int64

1 个答案:

答案 0 :(得分:1)

您需要一个嵌套的 for 循环。你可以试试:

>>> for Table in Tables:
...    for i in Tables[Table][1]:
...        df_table = Tables[Table][0][i]
...        print(df_table)
... 
0    1
1    3
Name: A, dtype: int64
0    2
1    4
Name: B, dtype: int64
0    10
1    30
Name: C, dtype: int64
0    20
1    40
Name: D, dtype: int64

但是,如果您需要简单地遍历数据框并打印它们的列,您可以尝试:

>>> for df in [df_1, df_2]:
...    for column in df:
...        print(df[column])
... 
0    1
1    3
Name: A, dtype: int64
0    2
1    4
Name: B, dtype: int64
0    10
1    30
Name: C, dtype: int64
0    20
1    40
Name: D, dtype: int64