【问题标题】:How do I get the mean in a range of values in a 2d DataFrame如何获得 2d DataFrame 中一系列值的平均值
【发布时间】:2020-01-07 10:54:18
【问题描述】:

我的 Jupyter-Notebook 中有一个 2d DataFrame (df_1),我想将某个范围值的平均值复制到一个新的 DataFrame 中。第一个 bin(基于 v_wind)应该从 3.00 计数到 3.10 并平均来自 p_abs 的所有相应值。数据包含大约 5502 行。

    p_abs          v_wind

    19.94           3.00
     3.35           3.02
    29.26           3.03
    47.97           3.04
    42.99           3.05
    16.20           3.06
    19.00           3.07
    34.54           3.10
    16.16           3.10
     7.49           3.11
    48.85           3.14
    23.19           3.16
    25.69           3.18
    34.47           3.18
    27.82           3.19
    31.18           3.19
    58.86           3.19
    36.17           3.19
    36.47           3.19
    33.79           3.22
    23.72           3.23

我已经尝试将 DataFrame 总结为:

df_1.groupby(['v_wind']).mean()

但这不允许我对我范围内的所有值进行平均。

谁能告诉我如何创建一个新的 DataFrame (df_2),如下所示:

   p_abs          v_wind

 avg_value          3.1
 avg_value          3.2
 avg_value          3.3
 avg_value          3.4
 avg_value          3.5
 avg_value          3.6

我是 Python 的血腥初学者,感谢任何建议...

【问题讨论】:

    标签: python pandas dataframe jupyter-notebook mean


    【解决方案1】:

    pd.cut。您需要通过将right 指定为参数来确定是否需要[3, 3.1)(3, 3.1] 之类的垃圾箱。

    import pandas as pd
    import numpy as np
    
    bins = np.arange(3, 4, 0.1)
    df.groupby(pd.cut(df.v_wind, bins=bins, right=False)).p_abs.mean()
    
    v_wind
    [3.0, 3.1)    25.530000
    [3.1, 3.2)    31.740833
    [3.2, 3.3)    28.755000
    [3.3, 3.4)          NaN
    [3.4, 3.5)          NaN
    [3.5, 3.6)          NaN
    [3.6, 3.7)          NaN
    [3.7, 3.8)          NaN
    [3.8, 3.9)          NaN
    Name: p_abs, dtype: float64
    

    如果您希望它更通用,而不是硬编码垃圾箱,您可以获得“偶数”垃圾箱:

    space = 0.1
    bins = np.arange(df['v_wind'].min()//space*space, 
                     (df['v_wind'].max()+space)//space*space, space)
    #array([3. , 3.1, 3.2, 3.3])
    

    【讨论】:

    • 使用df['v_win'].min()//1np.floor(df['v_win'].min()) ?
    猜你喜欢
    • 2019-05-02
    • 2012-03-18
    • 2022-08-14
    • 2015-09-11
    • 2020-06-09
    • 2020-10-11
    • 2020-11-14
    • 2018-07-29
    相关资源
    最近更新 更多