循环列列表求和和求平均值

时间:2019-12-08 09:56:51

标签: python pandas

我试图开发一个函数,该函数可以先进行除法,然后通过检查字符串列表来总结除法的结果。但是我总会得到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)

1 个答案:

答案 0 :(得分:0)

只需运行您的代码,它就可以正常工作。 因此,我认为问题出在您的数据表中。您可以尝试使用

运行它吗
df[i + "_daily_avg"] = df[i].astype(float) / n

代替

df[i + "_daily_avg"] = df[i] / n

在div()