簡體   English   中英

循環一個列列表來求和和求平均值

[英]loop a list of columns to sum and average

我試圖開發一個函數,可以先進行除法,然后通過檢查字符串列表來總結除法的結果。 但我總是在求和后得到 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

樣本數據

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)

只需運行您的代碼,它就可以正常工作。 所以我想你的數據表中的問題。 你可以嘗試運行它嗎

df[i + "_daily_avg"] = df[i].astype(float) / n

代替

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

在 div()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM