Multiidexed数据框的拆分列。出现ValueError:列的长度必须与键的长度相同

时间:2019-05-08 05:22:35

标签: python-3.x

我正在尝试拆分多索引数据帧的列,并且不断收到ValueError:列的长度必须与键的长度相同。我不知道如何解决此问题。我要拆分的列是8个不同列的8个加权平均值。我希望将每个加权平均值作为新列。

当前,我正在尝试str.split并将其设置为扩展。

def wavg(group, weight_name, avg_name, avg_name1, avg_name2, avg_name3, avg_name4, avg_name5, avg_name6, avg_name7):

    d = group[avg_name]
    w = group[weight_name]
    d1 = group[avg_name1]
    d2 = group[avg_name2]
    d3 = group[avg_name3]
    d4 = group[avg_name4]
    d5 = group[avg_name5]
    d6 = group[avg_name6]
    d7 = group[avg_name7]

    try:
        a = (d * w).sum() / w.sum()
        b = (d1 * w).sum() / w.sum()
        c = (d2 * w).sum() / w.sum()
        d = (d3 * w).sum() / w.sum()
        e = (d4 * w).sum() / w.sum()
        f = (d5 * w).sum() / w.sum()
        g = (d6 * w).sum() / w.sum()
        h = (d7 * w).sum() / w.sum()

        return a, b, c, d, e, f, g, h
    except ZeroDivisionError:
        return NaN

biweek = ntn_wwadata.groupby(['siteID', 'biweek_range']).apply(wavg, "subppt", "Ca", "Mg", "K", "Na", "NH4", "NO3", "Cl", "SO4")

biweekly = biweek.to_frame()
biweekly.columns = ['averages']
biweekly[['Ca','Mg','K','Na', 'NH4', 'NO3', 'Cl', 'SO4']] = biweekly.averages.str.split(',', expand = True)

我想要一个包含8列的数据框:Ca,Mg,K,Na,NH4,NO3,Cl,SO4。 我希望这些列是每两周一次的加权平均值,并与不同的站点相对应。

0 个答案:

没有答案