python-3.x - 在嵌套字典中循环
问题描述
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
解决方案
你需要一个嵌套的 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
推荐阅读
- reactjs - 为什么具有新值的 setState 比使用修改后的状态值更高效?
- sql - 使用 Group By 和 Rollup 创建期间到日期摘要
- javascript - 有没有更简单的方法来编写这个方法?
- angular - Angular中的简单模态对话框
- javascript - 使用 JavaScript 检测 Microsoft Internet Explorer 11 的更新版本
- azure-devops - 使用变量作为分支名称不起作用
- functional-programming - 我可以注释 `fun` 声明的完整类型吗?
- python - 用于对齐连续线的额外空格
- javascript - 当我在 React/Firebase 应用程序中单击我的按钮时没有任何反应
- php - 如何将此代码更改为 PHP 准备语句