gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 02:13:12 25 4
gpt4 key购买 nike

我有以下数据框:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com