【问题标题】:create a column that contains the iteration number belonging to each dataframe I have iterated创建一个包含属于我迭代的每个数据框的迭代号的列
【发布时间】:2021-07-06 19:38:55
【问题描述】:

我想在我迭代的每个数据库中创建一个列(阶段)。但是,我希望它计算表的迭代次数。代码如下。

cnt = 10  
dict_of_df = {} 

for i in range(0,10):
    #newname = df['col'].values[i]
    dict_of_df["df_{}".format(i)] = sql_query1
    dict_of_df["df_{}".format(i)]['Stage'] = format(i)

但是,当我得到结果时,dict_of_df["df_0"] Stage 列不包含等于 0 的值,dict_of_df["df_1"]Stage 列不包含 不包含等于 1 的值。

有人知道如何更正这个脚本吗?非常感谢

【问题讨论】:

    标签: python dataframe for-loop multiple-columns


    【解决方案1】:

    如果我正确地回答了您的问题,您希望在所有 DF 中都有一个列 Stage,这样 DF_i 具有 stage = i。您需要从作业的 RHS 中删除 format(i),您的 for 循环应如下所示

    for i in range(10):
       dict_if_df[f"df_{i}"]['Stage'] = i
    

    假设 sql_query1 实际上加载了一个 df 并且 dict_of_df 是 dfs 的 k,v 对。你可以在 Py3 中使用 f 字符串。

    【讨论】:

    • 感谢您的推荐。但是,我尝试输入dict_of_df["df_{}".format(i)]['Stage'] = i ,但它仍然不起作用,```Stage``` 列为所有 df_{} 提供了 9 的值。如果您对如何修复它有其他评论,我将不胜感激。是的 ``` sql_query1 ``` 是我要迭代的数据框。
    • 如果您对所有 df_i 使用相同的 DF 对象,由于浅拷贝,它将替换所有阶段值。您可以通过from copy import deepcopy 进行深拷贝。然后在字典中分配 df_i 时,确保将密钥引用到 sqldf 的深层副本
    猜你喜欢
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 2023-01-07
    • 1970-01-01
    • 2021-10-15
    • 2016-07-24
    • 1970-01-01
    • 2018-05-20
    相关资源
    最近更新 更多