动态将值传递给声明对象/变量

时间:2019-02-05 15:34:09

标签: python python-3.x dataframe

我正在尝试动态分配数据帧的名称,但失败了。

下面的代码将其分配给变量DataFrame_Name而不是DataFrame_Name的值

for i in range(0, len(Required_Reports_df)):
    ReportName = Required_Reports_df.iloc[i]['Report Name']
    ReportPath = Required_Reports_df.iloc[i]['Report Path']
    DataFrame_Name = ReportName + "_df"
    DataFrame_Name  = pd.read_excel (ReportPath, skiprows=[ReportStartingHeaderRow])

除了拥有字典外,我在这里还有哪些选择。如果“字典”是最好的选择,那么我如何在此处使用字典-在此之前我应该​​考虑使用另一个for循环创建字典。

请帮助我。

1 个答案:

答案 0 :(得分:1)

  

我正在尝试动态分配数据帧的名称。...如果“字典”是最好的选择

确实推荐使用字典:

dfs = {}  # define empty dictionary to store your dataframes

# construct iterable of name, path pairs
zipper = zip(Required_Reports_df['Report Name'], Required_Reports_df['Report Path'])

# iterate name, path pairs and add items to dictionary
for name, path in zipper:
    dfs[name] = pd.read_excel(path)

一旦您熟悉此模式,便可以更有效地重写为字典理解:

dfs = {name: pd.read_excel(path) for name, path in zipper}