我试图开发一个函数,该函数可以先进行除法,然后通过检查字符串列表来总结除法的结果。但是我总会得到NaN。请让我知道如何解决它。谢谢。
targetlist = ['Comp_date_1_180_Sum_add_count',
'Base_date_1_180_Sum_add_count']
columnlist = ['Sum_add_count']
def div(df, targetlist, columnlist, n):
for i in targetlist:
df[i] = df[i].fillna(0)
df[i + "_daily_avg"] = df[i] / n
for j in columnlist:
df[j + "_daily_avg"] = df.loc[:, df.columns.str.contains('|'.join(j + "_daily_avg"))].sum(axis=1)
return df
Smpale数据
Comp_date_1_180_Sum_add_count Base_date_1_180_Sum_add_count
21898.0 27542.0
2517.0 3727.0
8566.0 8130.0
预期产量
Comp_date_1_180_Sum_add_count_daily_avg | Base_date_1_180_Sum_add_count | Sum_add_count_daily_avg |
Comp_date_1_180_Sum_add_count_daily_avg = Comp_date_1_180_Sum_add_count/ n
Base_date_1_180_Sum_add_count = Base_date_1_180_Sum_add_count/ n
Sum_add_count_daily_avg = Average(Comp_date_1_180_Sum_add_count_daily_avg,Base_date_1_180_Sum_add_count)
答案 0 :(得分:0)
只需运行您的代码,它就可以正常工作。 因此,我认为问题出在您的数据表中。您可以尝试使用
运行它吗df[i + "_daily_avg"] = df[i].astype(float) / n
代替
df[i + "_daily_avg"] = df[i] / n
在div()
中