【问题标题】:Accessing a data frame that is generated inside for loop out side of the loop in python访问在python中循环外的for循环内部生成的数据框
【发布时间】:2020-04-10 04:23:21
【问题描述】:

我有一个在 for 循环中生成的数据框。我正在尝试保存这个数据框,以便我可以在循环之外访问它。我在下面有我的代码的 sn-p。

my_excel_sample = pd.read_excel(r"mypath\mydata.xlsx",sheet_name=None)

for tabs in my_excel_sample.keys():
    actualData = pd.DataFrame(removeEmptyColumns(my_excel_sample[tabs],0))
    data = replaceNanValues(actualData,0)
    data = renameColumns(data,0)
    data = removeFooters(data,0)
    data.reset_index(drop=True, inplace=True)
    data = pd.DataFrame(RowMerger(data,0))

现在我想在循环之外使用data。谁能帮我解决这个问题?

【问题讨论】:

  • 为什么不在循环之外声明变量,这样循环结束时你仍然可以拥有它。在循环开始之前用任何 actualData = "" 初始化它
  • @kareem_emad 查看loopdf 的创建。 H 正在使用循环迭代地创建数据帧。这不能在 for 循环开始之前完成。他需要该循环来获取tabs,该循环用于df 创建。

标签: python pandas dataframe for-loop anaconda


【解决方案1】:

您正在for 循环内迭代地创建多个数据帧,并将其存储在变量data 中。

您可以将数据框 (data) 添加到列表中,然后随时访问它们。

试试这个:

my_excel_sample = pd.read_excel(r"mypath\mydata.xlsx",sheet_name=None)
final_df_list = []

for tabs in my_excel_sample.keys():
    actualData = pd.DataFrame(removeEmptyColumns(my_excel_sample[tabs],0))
    data = replaceNanValues(actualData,0)
    data = renameColumns(data,0)
    data = removeFooters(data,0)
    data.reset_index(drop=True, inplace=True)
    data = pd.DataFrame(RowMerger(data,0))

    final_df_list.append(data)

print(final_df_list)

如果您有任何类型的标识符可用于以后识别数据帧,我建议您使用字典。将标识符设为keys,将变量data设为value

以下是我以序列号为键的示例:

my_excel_sample = pd.read_excel(r"mypath\mydata.xlsx",sheet_name=None)

final_df_dict = dict()
ind = 0

for tabs in my_excel_sample.keys():
    actualData = pd.DataFrame(removeEmptyColumns(my_excel_sample[tabs],0))
    data = replaceNanValues(actualData,0)
    data = renameColumns(data,0)
    data = removeFooters(data,0)
    data.reset_index(drop=True, inplace=True)
    data = pd.DataFrame(RowMerger(data,0))

    final_df_dict[ind] = data
    ind += 1

print(final_df_dict)

【讨论】:

  • 这很棒。现在我知道如何解决这个问题以供将来实施。非常感谢:)
  • 欢迎。很高兴我能帮上忙。 :)
  • 一个简单的问题,但是,我想知道是否有任何方法可以将 final_df_dict 制作或定义为数据框,因为最终我想将最终数据保存为 csv?
  • 是的,您可以将datafame 存储在另一个dataframe 中,但这会变得有点混乱。您可以查看stackoverflow.com/questions/46648167/…>>
猜你喜欢
  • 2020-04-04
  • 2021-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多