【问题标题】:Calculate mean of each subsequent group of 2 rows with pandas用 pandas 计算每个后续组的 2 行的平均值
【发布时间】:2019-09-18 07:49:14
【问题描述】:

我正在尝试计算所有数据框的每个后续组的 2 行的平均值。我想我通过以下几行得到了这一点: df.groupby(np.arange(len(df))//2).mean()

但是,问题在于并非所有值都是数字。在这种情况下,如果该组的第二行是数字,而第一行不是,而不是平均值,则该值与第二行保持相同。如果两行都不是数字,则该值应分配为 0。

为了更好的可视化,我有这个数据框:

    Well    Ct
0    A1    Undetermined
1    A2    Undertermined
2    A3    Undetermined
3    A4    41.2
4    B1    42
5    B2    43

我想要得到的是:

     Well     Ct
0    A1-A2    0.0
1    A3-A4    41.2
2    B1/B2    42.5

有什么方法可以解决这个问题或其他已经发布的类似问题吗?

【问题讨论】:

    标签: python pandas group-by mean


    【解决方案1】:

    使用pandas.to_numeric 将非数字值强制转换为NaNs(默认情况下,pandas 在计算平均值时会忽略该值),然后使用groupby + agg 分配最终组。


    df.Ct = pd.to_numeric(df.Ct, errors='coerce')
    
    df.groupby(np.arange(df.shape[0]) // 2).agg({'Well': '-'.join, 'Ct': 'mean'}).fillna(0)
    

        Well    Ct
    0  A1-A2   0.0
    1  A3-A4  41.2
    2  B1-B2  42.5
    

    【讨论】:

    • 工作得很好!谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-11-08
    • 2019-03-07
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多