【问题标题】:Looping this code to get new dataframe based on previous calculated dataframe? [duplicate]循环此代码以根据先前计算的数据帧获取新数据帧? [复制]
【发布时间】:2020-01-30 13:47:28
【问题描述】:
df2 = df.copy()
    df2['avgTemp'] = df2['avgTemp'] * tempchange
    df2['year'] = df2['year'] + 20
    df_final = pd.concat([df,df2])

OUTPUT:
    Country avgTemp year
0   Afghanistan 14.481583   2012
0   Afghanistan 15.502164   2032
1   Africa  24.725917   2012
1   Africa  26.468460   2032
2   Albania 13.768250   2012
... ... ... ...
240 Zambia  21.697750   2012
241 Zimbabwe    23.038036   2032
241 Zimbabwe    21.521333   2012
242 Åland   6.063917    2012
242 Åland   6.491267    2032

所以目前我正在尝试创建一个循环,这样我就可以对“df_2”进行相同的计算并返回“df_3”,并继续这样做,直到我有一定数量的新数据帧,然后我可以将它们连接在一起.谢谢您的帮助! :)

所以最终结果应该是 df_1、df_2、df_3 等等。所以我可以将它们组合成一个大数据集

【问题讨论】:

  • df_3 应该是什么?与 df 到 df_2 的逻辑相同?
  • 是的,正确,所以与创建 df2 时的计算完全相同,但使用 df2 作为创建 df3 的参考
  • 这能回答你的问题吗? Create multiple dataframes in loop

标签: python pandas


【解决方案1】:

是的,我会使用循环来解决问题。我在函数range 中传递的x 表示您希望执行的循环数:

lists_of_dfs = []
for i in range(x):
    df_aux = df.copy()
    df_aux['avgTemp'] = df['avgTemp'] * (tempchange ** i)
    df_aux['year'] = df['year'] + (20 * i)
    lists_of_dfs.append(df_aux)

最后是完整的数据框列表:

final_df = pd.concat(lists_of_dfs)

唯一的条件是变量tempchange必须是(1+%),不能只有%变化,否则公式会失败。

【讨论】:

  • 你是救世主,你很棒,非常感谢!只需要删除 pd.concat(lists_of_dfs) 的括号。
  • 是的,我们已经传递了一个列表,不需要括号。谢谢!
猜你喜欢
  • 1970-01-01
  • 2020-11-21
  • 1970-01-01
  • 1970-01-01
  • 2019-09-30
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 2020-10-11
相关资源
最近更新 更多