我正在尝试拆分多索引数据帧的列,并且不断收到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。 我希望这些列是每两周一次的加权平均值,并与不同的站点相对应。