python - 计算数据帧切片的统计信息

标签 python pandas dataframe

我有以下数据框:

df= pd.DataFrame({'A': np.random.randn(10),
                  'B': np.concatenate((np.repeat(np.nan, 4), np.array([0.7]), np.repeat(np.nan, 4), np.array([0.5]))),
                  'C': np.random.randn(10),
                  'D': np.concatenate((np.repeat(np.nan, 4), np.array([0.2]), np.repeat(np.nan, 4), np.array([0.15])))})

看起来像这样:

    A           B    C           D
0   0.537109    NaN  -0.204046   NaN
1   0.744488    NaN   0.903607   NaN
2   0.640995    NaN   0.712210   NaN
3   0.212758    NaN   0.293984   NaN
4  -1.786725    0.7   0.282747   0.20
5   1.486037    NaN  -0.199659   NaN
6   0.267356    NaN   0.890397   NaN
7   0.697408    NaN  -0.771626   NaN
8   0.044247    NaN  -1.157836   NaN
9   0.345658    0.5   1.556390   0.15

我想计算一些统计数据,例如该数据帧切片的平均值,例如,我希望结果看起来像这样:

    MeanA   B    MeanC  D
0   2.1     0.7  1.3    0.20
1   1.4     0.5  5.6    0.15 

换句话说,我想保留 B 和 D 列中的非 NA 值,并计算 B 和 D 中非 NA 值之上/之下的值的平均值和 A 和 C 的其他值(在本例中) ,让我们在两种方式中都包含 -1.786725,类似地 0.282747)。

注意:MeanA 和 MeanC 的值是由于使用 np.random.randn() 而组成的。

当然,现在我的真实数据框包含更多列和更多行,因此最好概括一下这一点。

最佳答案

这应该做:

b_nans = df[~df.B.isnull()].index.values
cols_stats = ['A','C']
cols_nans = ['B','D']
df2 = pd.DataFrame(columns = [['mean_'+ col for col in cols] + cols_nans])

for col_stat, col_nan in zip(cols_stats, cols_nans):
    df2[col_nan] = df[~df[col_nan].isnull()][col_nan].reset_index(drop=True)
    i_prev = 0
    for k,i in enumerate(b_nans):
        df2.loc[k, 'mean_'+ col_stat] = df.loc[i_prev:i,col_stat].mean()
        i_prev = i

print(df2)

      mean_A    mean_C       B    D
0   -0.059588   0.367446    0.7 0.20
1   0.037202    0.373243    0.5 0.15

关于python - 计算数据帧切片的统计信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53279501/

相关文章:

r - 过滤 R data.frames 时更新因子水平

python - 如何计算numpy中的斜率

python - TypeError : 'NoneType' object is unsubscriptable in cv2. 归一化

python - psql.frame_query

python - 在 pandas 中,如何从字典列表创建数据框?

python - 计算 Pandas 数据框中最近邻居的平均距离

python-3.x - 将函数应用于 Pandas 数据框并添加新列?

python - GAE 模拟器如何限制可用 Python 模块的列表?

python - 如何修复 'BlobService' 未定义'错误

python - 从字典创建 1 行数据框,包含三列并将变量附加到第一列