【问题标题】:How to create different dataframes dynamically from a for loop for storing data如何从 for 循环动态创建不同的数据帧以存储数据
【发布时间】:2020-05-31 18:06:14
【问题描述】:

我有如下代码。

ind1=0
    for ind in df2.index: 
                       df3 =df1[df2.iloc[ind1,2:].dropna().tolist()]
                       df3.insert(0,'Col',df2.loc[ind,1])
                       display(df3)
                       ind1=ind1+1

基本上对于每次迭代,数据都将存储到df3。但是我想为 for 循环中的每次迭代动态创建新的 DataFrame。

谁能帮助我,如何使用 for 循环动态生成新的 DataFrame。

【问题讨论】:

    标签: python python-3.x pandas dataframe pandas-groupby


    【解决方案1】:

    您可以有一个列表来存储来自每个循环的数据帧。

    df_list = []
    
    ind1=0
    for ind in df2.index:
        df3 =df1[df2.iloc[ind1,2:].dropna().tolist()]
        df3.insert(0,'Col',df2.loc[ind,1])
        display(df3)
        df_list.append(df3) ## append this df in list
        ind1=ind1+1
    

    然后你可以迭代列表来获取单个数据框:

    for df in df_list:
        print(df)
    

    您可以简单地连接 df_list 中的所有 df:

    df = pd.concat(df_list)
    

    【讨论】:

    • 感谢@Mayank 的即时回复。但是,当我从每个数据帧返回更多数据并将其存储在列表中时,它会保持良好状态吗?
    • 我们只是创建一个列表来存储多个数据帧。它不依赖于数据框的大小。所以它会很好。
    • 谢谢。我可以使用 pd.concat 连接列表中的所有这些数据帧吗?
    • @Debasis 请检查我更新答案的最后一部分。如果有帮助,请考虑支持并接受它。
    • 哈哈..谢谢队友@anky。出于某种原因,即使 OP 对答案感到满意,他们也不投赞成票,这感觉很糟糕。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    • 1970-01-01
    相关资源
    最近更新 更多