对于数据框中列的循环

For loop on column in dataframe

我正在尝试计算数据框中每行的方程并将该值分配给新列:

def exercise_02():
    df_region = df.groupby(by = "region").sum()
    for i in range(len(df_region)):
        i == 0
        df_region["w_avg"] = df1["2018_x"][i] * df1["2018_y"][i] / df1["2018_y"][i]
        i = i+1
    result = df_region
    return result

当我只写这个时,它显示了这个输出: enter image description here

如您所见,已创建列 w_avg,但它包含相同的值。

我试图通过在循环内的列名后添加 [i] 来解决:

def exercise_02():
    df_region = df.groupby(by = "region").sum()
    for i in range(len(df_region)):
        i == 0
        **df_region["w_avg"][i]** = df1["2018_x"][i] * df1["2018_y"][i] / df1["2018_y"][i]
        i = i+1
    result = df_region
    return result

但是,我收到此错误消息:

 if tolerance is not None:

KeyError: 'w_avg'

你知道我做错了什么吗? 谢谢!

DataFrames 的优点在于您不需要 循环。它们是矢量化的。如果您要将您的(作业?)功能更改为

def exercise_02():
    df_region = df.groupby(by = "region").sum()
    df_region["w_avg"] = df_region["2018_x"] * df_region["2018_y"] / df_region["2018_y"]
    return df_region

但是,我注意到您混淆了多个数据帧。如果它们的大小不同,您 运行 陷入有关 length/index 的问题。这真的取决于你在 df_regiondfdf_1 之间的关系。

我提到后者的原因是您或多或少不小心(?)使用了函数范围之外的变量。您的函数没有参数,但在其范围内使用 dfdf1。因此,您的问题中肯定缺少某些内容,您需要了解自己,或传达给社区以完整 'anwer' 您的问题。