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
答案 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